mirror of
https://github.com/torvalds/linux.git
synced 2025-12-01 07:26:02 +07:00
workqueue: Basic memory allocation profiling support
Hook alloc_workqueue and alloc_workqueue_attrs() so that they're accounted to the callsite. Since we're doing allocations on behalf of another subsystem, this helps when using memory allocation profiling to check for leaks. Cc: Tejun Heo <tj@kernel.org> Cc: Lai Jiangshan <jiangshanlai@gmail.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
committed by
Tejun Heo
parent
0998f0ac30
commit
fda6add924
@@ -4626,7 +4626,7 @@ void free_workqueue_attrs(struct workqueue_attrs *attrs)
|
||||
*
|
||||
* Return: The allocated new workqueue_attr on success. %NULL on failure.
|
||||
*/
|
||||
struct workqueue_attrs *alloc_workqueue_attrs(void)
|
||||
struct workqueue_attrs *alloc_workqueue_attrs_noprof(void)
|
||||
{
|
||||
struct workqueue_attrs *attrs;
|
||||
|
||||
@@ -5679,12 +5679,12 @@ static struct workqueue_struct *__alloc_workqueue(const char *fmt,
|
||||
else
|
||||
wq_size = sizeof(*wq);
|
||||
|
||||
wq = kzalloc(wq_size, GFP_KERNEL);
|
||||
wq = kzalloc_noprof(wq_size, GFP_KERNEL);
|
||||
if (!wq)
|
||||
return NULL;
|
||||
|
||||
if (flags & WQ_UNBOUND) {
|
||||
wq->unbound_attrs = alloc_workqueue_attrs();
|
||||
wq->unbound_attrs = alloc_workqueue_attrs_noprof();
|
||||
if (!wq->unbound_attrs)
|
||||
goto err_free_wq;
|
||||
}
|
||||
@@ -5774,9 +5774,9 @@ err_destroy:
|
||||
}
|
||||
|
||||
__printf(1, 4)
|
||||
struct workqueue_struct *alloc_workqueue(const char *fmt,
|
||||
unsigned int flags,
|
||||
int max_active, ...)
|
||||
struct workqueue_struct *alloc_workqueue_noprof(const char *fmt,
|
||||
unsigned int flags,
|
||||
int max_active, ...)
|
||||
{
|
||||
struct workqueue_struct *wq;
|
||||
va_list args;
|
||||
@@ -5791,7 +5791,7 @@ struct workqueue_struct *alloc_workqueue(const char *fmt,
|
||||
|
||||
return wq;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(alloc_workqueue);
|
||||
EXPORT_SYMBOL_GPL(alloc_workqueue_noprof);
|
||||
|
||||
#ifdef CONFIG_LOCKDEP
|
||||
__printf(1, 5)
|
||||
|
||||
Reference in New Issue
Block a user