Commit d8764c19 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'wq-for-6.11-rc1-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq

Pull workqueue fix from Tejun Heo:
 "cpus_read_lock() was dropped from workqueue creation path but there
  were still remaining lockdep_assert_cpus_held() triggering spurious
  lockdep failures. Remove them"

* tag 'wq-for-6.11-rc1-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
  workqueue: Remove unneeded lockdep_assert_cpus_held()
parents c89d780c aa868475
...@@ -5342,8 +5342,6 @@ static int apply_workqueue_attrs_locked(struct workqueue_struct *wq, ...@@ -5342,8 +5342,6 @@ static int apply_workqueue_attrs_locked(struct workqueue_struct *wq,
* *
* Performs GFP_KERNEL allocations. * Performs GFP_KERNEL allocations.
* *
* Assumes caller has CPU hotplug read exclusion, i.e. cpus_read_lock().
*
* Return: 0 on success and -errno on failure. * Return: 0 on success and -errno on failure.
*/ */
int apply_workqueue_attrs(struct workqueue_struct *wq, int apply_workqueue_attrs(struct workqueue_struct *wq,
...@@ -5351,8 +5349,6 @@ int apply_workqueue_attrs(struct workqueue_struct *wq, ...@@ -5351,8 +5349,6 @@ int apply_workqueue_attrs(struct workqueue_struct *wq,
{ {
int ret; int ret;
lockdep_assert_cpus_held();
mutex_lock(&wq_pool_mutex); mutex_lock(&wq_pool_mutex);
ret = apply_workqueue_attrs_locked(wq, attrs); ret = apply_workqueue_attrs_locked(wq, attrs);
mutex_unlock(&wq_pool_mutex); mutex_unlock(&wq_pool_mutex);
...@@ -5434,7 +5430,6 @@ static int alloc_and_link_pwqs(struct workqueue_struct *wq) ...@@ -5434,7 +5430,6 @@ static int alloc_and_link_pwqs(struct workqueue_struct *wq)
bool highpri = wq->flags & WQ_HIGHPRI; bool highpri = wq->flags & WQ_HIGHPRI;
int cpu, ret; int cpu, ret;
lockdep_assert_cpus_held();
lockdep_assert_held(&wq_pool_mutex); lockdep_assert_held(&wq_pool_mutex);
wq->cpu_pwq = alloc_percpu(struct pool_workqueue *); wq->cpu_pwq = alloc_percpu(struct pool_workqueue *);
...@@ -5695,8 +5690,7 @@ struct workqueue_struct *alloc_workqueue(const char *fmt, ...@@ -5695,8 +5690,7 @@ struct workqueue_struct *alloc_workqueue(const char *fmt,
/* /*
* wq_pool_mutex protects the workqueues list, allocations of PWQs, * wq_pool_mutex protects the workqueues list, allocations of PWQs,
* and the global freeze state. alloc_and_link_pwqs() also requires * and the global freeze state.
* cpus_read_lock() for PWQs' affinities.
*/ */
apply_wqattrs_lock(); apply_wqattrs_lock();
...@@ -6862,8 +6856,7 @@ static int workqueue_apply_unbound_cpumask(const cpumask_var_t unbound_cpumask) ...@@ -6862,8 +6856,7 @@ static int workqueue_apply_unbound_cpumask(const cpumask_var_t unbound_cpumask)
* @exclude_cpumask: the cpumask to be excluded from wq_unbound_cpumask * @exclude_cpumask: the cpumask to be excluded from wq_unbound_cpumask
* *
* This function can be called from cpuset code to provide a set of isolated * This function can be called from cpuset code to provide a set of isolated
* CPUs that should be excluded from wq_unbound_cpumask. The caller must hold * CPUs that should be excluded from wq_unbound_cpumask.
* either cpus_read_lock or cpus_write_lock.
*/ */
int workqueue_unbound_exclude_cpumask(cpumask_var_t exclude_cpumask) int workqueue_unbound_exclude_cpumask(cpumask_var_t exclude_cpumask)
{ {
...@@ -6873,7 +6866,6 @@ int workqueue_unbound_exclude_cpumask(cpumask_var_t exclude_cpumask) ...@@ -6873,7 +6866,6 @@ int workqueue_unbound_exclude_cpumask(cpumask_var_t exclude_cpumask)
if (!zalloc_cpumask_var(&cpumask, GFP_KERNEL)) if (!zalloc_cpumask_var(&cpumask, GFP_KERNEL))
return -ENOMEM; return -ENOMEM;
lockdep_assert_cpus_held();
mutex_lock(&wq_pool_mutex); mutex_lock(&wq_pool_mutex);
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment