/* * (C) 2001 Clemson University and The University of Chicago * * See COPYING in top-level directory. */ /* * Definitions of downcalls used in Linux kernel module. */ #ifndef __DOWNCALL_H #define __DOWNCALL_H /* * Sanitized the device-client core interaction * for clean 32-64 bit usage */ struct orangefs_io_response { __s64 amt_complete; }; struct orangefs_lookup_response { struct orangefs_object_kref refn; }; struct orangefs_create_response { struct orangefs_object_kref refn; }; struct orangefs_symlink_response { struct orangefs_object_kref refn; }; struct orangefs_getattr_response { struct ORANGEFS_sys_attr_s attributes; char link_target[ORANGEFS_NAME_MAX]; }; struct orangefs_mkdir_response { struct orangefs_object_kref refn; }; /* * duplication of some system interface structures so that I don't have * to allocate extra memory */ struct orangefs_dirent { char *d_name; int d_length; struct orangefs_khandle khandle; }; struct orangefs_statfs_response { __s64 block_size; __s64 blocks_total; __s64 blocks_avail; __s64 files_total; __s64 files_avail; }; struct orangefs_fs_mount_response { __s32 fs_id; __s32 id; struct orangefs_khandle root_khandle; }; /* the getxattr response is the attribute value */ struct orangefs_getxattr_response { __s32 val_sz; __s32 __pad1; char val[ORANGEFS_MAX_XATTR_VALUELEN]; }; /* the listxattr response is an array of attribute names */ struct orangefs_listxattr_response { __s32 returned_count; __s32 __pad1; __u64 token; char key[ORANGEFS_MAX_XATTR_LISTLEN * ORANGEFS_MAX_XATTR_NAMELEN]; __s32 keylen; __s32 __pad2; __s32 lengths[ORANGEFS_MAX_XATTR_LISTLEN]; }; struct orangefs_param_response { union { __s64 value64; __s32 value32[2]; } u; }; #define PERF_COUNT_BUF_SIZE 4096 struct orangefs_perf_count_response { char buffer[PERF_COUNT_BUF_SIZE]; }; #define FS_KEY_BUF_SIZE 4096 struct orangefs_fs_key_response { __s32 fs_keylen; __s32 __pad1; char fs_key[FS_KEY_BUF_SIZE]; }; /* 2.9.6 */ struct orangefs_features_response { __u64 features; }; struct orangefs_downcall_s { __s32 type; __s32 status; /* currently trailer is used only by readdir */ __s64 trailer_size; char *trailer_buf; union { struct orangefs_io_response io; struct orangefs_lookup_response lookup; struct orangefs_create_response create; struct orangefs_symlink_response sym; struct orangefs_getattr_response getattr; struct orangefs_mkdir_response mkdir; struct orangefs_statfs_response statfs; struct orangefs_fs_mount_response fs_mount; struct orangefs_getxattr_response getxattr; struct orangefs_listxattr_response listxattr; struct orangefs_param_response param; struct orangefs_perf_count_response perf_count; struct orangefs_fs_key_response fs_key; struct orangefs_features_response features; } resp; }; struct orangefs_readdir_response_s { __u64 token; __u64 directory_version; __u32 __pad2; __u32 orangefs_dirent_outcount; struct orangefs_dirent *dirent_array; }; #endif /* __DOWNCALL_H */ t/commit/tools?id=07cd12945551b63ecb1a349d50a6d69d1d6feb4a'>tools/perf/pmu-events/arch/x86/ivytown/pipeline.json
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2017-01-26 16:47:28 -0500
committerTejun Heo <tj@kernel.org>2017-01-26 16:47:28 -0500
commit07cd12945551b63ecb1a349d50a6d69d1d6feb4a (patch)
tree75f65eba7eac9277971082a2d5a4cf1370562c0c /tools/perf/pmu-events/arch/x86/ivytown/pipeline.json
parent7ce7d89f48834cefece7804d38fc5d85382edf77 (diff)
cgroup: don't online subsystems before cgroup_name/path() are operational
While refactoring cgroup creation, a5bca2152036 ("cgroup: factor out cgroup_create() out of cgroup_mkdir()") incorrectly onlined subsystems before the new cgroup is associated with it kernfs_node. This is fine for cgroup proper but cgroup_name/path() depend on the associated kernfs_node and if a subsystem makes the new cgroup_subsys_state visible, which they're allowed to after onlining, it can lead to NULL dereference. The current code performs cgroup creation and subsystem onlining in cgroup_create() and cgroup_mkdir() makes the cgroup and subsystems visible afterwards. There's no reason to online the subsystems early and we can simply drop cgroup_apply_control_enable() call from cgroup_create() so that the subsystems are onlined and made visible at the same time. Signed-off-by: Tejun Heo <tj@kernel.org> Reported-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru> Fixes: a5bca2152036 ("cgroup: factor out cgroup_create() out of cgroup_mkdir()") Cc: stable@vger.kernel.org # v4.6+
Diffstat (limited to 'tools/perf/pmu-events/arch/x86/ivytown/pipeline.json')