aboutsummaryrefslogtreecommitdiff
path: root/kernel/mutex-debug.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2013-03-12 11:29:57 -0700
committerTejun Heo <tj@kernel.org>2013-03-12 11:29:57 -0700
commite904e6c2668bba78497c660aec812ca3f77f4ef9 (patch)
tree96aa53109506d97703c1195bc2dba7a47553d702 /kernel/mutex-debug.c
parente98d5b16cf4df992c40a7c83f1eae61db5bb03da (diff)
workqueue: introduce kmem_cache for pool_workqueues
pool_workqueues need to be aligned to 1 << WORK_STRUCT_FLAG_BITS as the lower bits of work->data are used for flags when they're pointing to pool_workqueues. Due to historical reasons, unbound pool_workqueues are allocated using kzalloc() with sufficient buffer area for alignment and aligned manually. The original pointer is stored at the end which free_pwqs() retrieves when freeing it. There's no reason for this hackery anymore. Set alignment of struct pool_workqueue to 1 << WORK_STRUCT_FLAG_BITS, add kmem_cache for pool_workqueues with proper alignment and replace the hacky alloc and free implementation with plain kmem_cache_zalloc/free(). In case WORK_STRUCT_FLAG_BITS gets shrunk too much and makes fields of pool_workqueues misaligned, trigger WARN if the alignment of struct pool_workqueue becomes smaller than that of long long. Note that assertion on IS_ALIGNED() is removed from alloc_pwqs(). We already have another one in pwq init loop in __alloc_workqueue_key(). This patch doesn't introduce any visible behavior changes. Signed-off-by: Tejun Heo <tj@kernel.org> Reviewed-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Diffstat (limited to 'kernel/mutex-debug.c')
0 files changed, 0 insertions, 0 deletions