Re: [PATCH] cgroup/cpuset: remove circular dependency deadlock

From: Prateek Sood
Date: Wed Sep 06 2017 - 10:24:14 EST


On 09/06/2017 06:26 PM, Waiman Long wrote:
> On 09/06/2017 07:48 AM, Prateek Sood wrote:
>> Remove circular dependency deadlock in a scenario where hotplug of CPU is
>> being done while there is updation in cgroup and cpuset triggered from
>> userspace.
>>
>> Example scenario:
>> kworker/0:0 => kthreadd => init:729 => init:1 => kworker/0:0
>>
>> kworker/0:0 - lock(cpuhotplug.mutex) [held]
>> flush(work) [no high prio workqueue available on CPU]
>> wait_for_completion()
>>
>> kthreadd - percpu_down_read(cgroup_threadgroup_rwsem) [waiting]
>>
>> init:729 - percpu_down_write(cgroup_threadgroup_rwsem) [held]
>> lock(cpuset_mutex) [waiting]
>>
>> init:1 - lock(cpuset_mutex) [held]
>> lock(cpuhotplug.mutex) [waiting]
>>
>> Eliminate this dependecy by reordering locking of cpuset_mutex
>> and cpuhotplug.mutex in following order
>> 1. Acquire cpuhotplug.mutex
>> 2. Acquire cpuset_mutex
>>
>> Signed-off-by: Prateek Sood <prsood@xxxxxxxxxxxxxx>
>
> Is this patch for the latest upstream kernel or 4.4? There is no
> cpuhotplug.mutex anymore in upstream kernel. It is a per-cpu rwsem
> cpu_hotplug_lock.
>
> Cheers,
> Longman
>

Thanks for inputs, I will check latest kernel for details

Regards
Prateek

--
Qualcomm India Private Limited, on behalf of Qualcomm Innovation
Center, Inc., is a member of Code Aurora Forum, a Linux Foundation
Collaborative Project