lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Tue, 03 Sep 2013 18:48:20 +0530
From:	"Srivatsa S. Bhat" <srivatsa.bhat@...ux.vnet.ibm.com>
To:	Viresh Kumar <viresh.kumar@...aro.org>
CC:	"Rafael J. Wysocki" <rjw@...k.pl>,
	Stephen Boyd <sboyd@...eaurora.org>,
	Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
	"cpufreq@...r.kernel.org" <cpufreq@...r.kernel.org>,
	"linux-pm@...r.kernel.org" <linux-pm@...r.kernel.org>
Subject: Re: mutex warning in cpufreq + RFC patch

On 09/01/2013 09:51 PM, Viresh Kumar wrote:
> On 1 September 2013 18:52, Rafael J. Wysocki <rjw@...k.pl> wrote:
>> On Sunday, September 01, 2013 11:54:10 AM Viresh Kumar wrote:
>>> Btw, I am facing another crash which I am not sure how to fix.. It
>>> came with your script:
>>
>> This isn't a crash, but a WARN_ON_ONCE() triggering.  The comment in kref_get()
>> explains when that occurs, so we seem to have a race between
>> store_scaling_min_freq() and CPU removal.
> 
> Yeah, I meant the same thing.. I don't know how to solve it or what's
> the correct way to solve it:
> 
> I tried this:
> 
> diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
> index 4d5723db..be2e5f4 100644
> --- a/drivers/cpufreq/cpufreq.c
> +++ b/drivers/cpufreq/cpufreq.c
> @@ -200,8 +200,14 @@ struct cpufreq_policy *cpufreq_cpu_get(unsigned int cpu)
>         if (cpufreq_driver) {
>                 /* get the CPU */
>                 policy = per_cpu(cpufreq_cpu_data, cpu);
> -               if (policy)
> -                       kobject_get(&policy->kobj);
> +               if (policy) {
> +                       cpu_hotplug_disable();
> +                       if (unlikely(!cpu_online(policy->cpu)))
> +                               policy = NULL;
> +                       else
> +                               kobject_get(&policy->kobj);
> +                       cpu_hotplug_enable();
> +               }
>         }
> 
> And this gave another crash:
> 
> [  246.724464] INFO: task irqbalance:1052 blocked for more than 120 seconds.
> [  246.724474] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> disables this message.
> [  246.724479] irqbalance      D 0000000000000000     0  1052      1 0x00000000
> [  246.724489]  ffff88002f2dfd78 0000000000000086 ffff88002e53b800
> 0000000000000001
> [  246.724498]  ffff880030620000 ffff88002f2dffd8 ffff88002f2dffd8
> ffff88002f2dffd8
> [  246.724505]  ffff880030181700 ffff880030620000 ffff8800ccbfd698
> ffffffff81c981c0
> [  246.724511] Call Trace:
> [  246.724525]  [<ffffffff81679c39>] schedule+0x29/0x70
> [  246.724532]  [<ffffffff81679f1e>] schedule_preempt_disabled+0xe/0x10
> [  246.724543]  [<ffffffff816781d2>] __mutex_lock_slowpath+0x112/0x1b0
> [  246.724552]  [<ffffffff816776ca>] mutex_lock+0x2a/0x41
> [  246.724561]  [<ffffffff81416e15>] lock_device_hotplug+0x15/0x20
> [  246.724568]  [<ffffffff81416e60>] show_online+0x20/0x60
> [  246.724574]  [<ffffffff81415ab0>] dev_attr_show+0x20/0x60
> [  246.724583]  [<ffffffff81129a3e>] ? __get_free_pages+0xe/0x40
> [  246.724592]  [<ffffffff811f2c9a>] sysfs_read_file+0xaa/0x180
> [  246.724602]  [<ffffffff81182074>] vfs_read+0xb4/0x180
> [  246.724610]  [<ffffffff811822f2>] SyS_read+0x52/0xa0
> [  246.724617]  [<ffffffff816838c2>] system_call_fastpath+0x16/0x1b
> [  246.724631] INFO: task preload:1731 blocked for more than 120 seconds.
> [  246.724634] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> disables this message.
> [  246.724637] preload         D ffffffff8180fb60     0  1731      1 0x00000000
> [  246.724643]  ffff8800cca71d28 0000000000000086 ffff8800cca71cc8
> ffffffff8118bafd
> [  246.724650]  ffff88002e7dc500 ffff8800cca71fd8 ffff8800cca71fd8
> ffff8800cca71fd8
> [  246.724655]  ffff880119359700 ffff88002e7dc500 ffff880119408240
> ffffffff81c31b88
> [  246.724661] Call Trace:
> [  246.724669]  [<ffffffff8118bafd>] ? terminate_walk+0x3d/0x50
> [  246.724675]  [<ffffffff81679c39>] schedule+0x29/0x70
> [  246.724681]  [<ffffffff81679f1e>] schedule_preempt_disabled+0xe/0x10
> [  246.724690]  [<ffffffff816781d2>] __mutex_lock_slowpath+0x112/0x1b0
> [  246.724697]  [<ffffffff8118ba72>] ? path_put+0x22/0x30
> [  246.724705]  [<ffffffff816776ca>] mutex_lock+0x2a/0x41
> [  246.724713]  [<ffffffff8104d19c>] get_online_cpus+0x2c/0x50
> [  246.724722]  [<ffffffff8114196a>] all_vm_events+0x1a/0x120
> [  246.724730]  [<ffffffff81141b05>] vmstat_start+0x95/0xc0
> [  246.724738]  [<ffffffff811a3739>] seq_read+0x139/0x3e0
> [  246.724747]  [<ffffffff812acbb3>] ? security_file_permission+0xa3/0xc0
> [  246.724755]  [<ffffffff811e4083>] proc_reg_read+0x43/0x70
> [  246.724763]  [<ffffffff81182074>] vfs_read+0xb4/0x180
> [  246.724770]  [<ffffffff811822f2>] SyS_read+0x52/0xa0
> [  246.724776]  [<ffffffff816838c2>] system_call_fastpath+0x16/0x1b
> [  246.724781] INFO: task ondemand:1867 blocked for more than 120 seconds.
> [  246.724783] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> disables this message.
> [  246.724786] ondemand        D ffffffff8180fb60     0  1867      1 0x00000000
> [  246.724791]  ffff8800d66c3ba8 0000000000000082 ffff8800d66c3be8
> ffffffff811c0ba2
> [  246.724797]  ffff88002f1a0000 ffff8800d66c3fd8 ffff8800d66c3fd8
> ffff8800d66c3fd8
> [  246.724803]  ffffffff81c10440 ffff88002f1a0000 0000000000000000
> ffffffff81c31b40
> [  246.724809] Call Trace:
> [  246.724817]  [<ffffffff811c0ba2>] ? fsnotify+0x1d2/0x2b0
> [  246.724822]  [<ffffffff81679c39>] schedule+0x29/0x70
> [  246.724828]  [<ffffffff81679f1e>] schedule_preempt_disabled+0xe/0x10
> [  246.724836]  [<ffffffff816781d2>] __mutex_lock_slowpath+0x112/0x1b0
> [  246.724844]  [<ffffffff816776ca>] mutex_lock+0x2a/0x41
> [  246.724850]  [<ffffffff8104d1f5>] cpu_maps_update_begin+0x15/0x20
> [  246.724856]  [<ffffffff8104d53e>] cpu_hotplug_disable+0xe/0x20
> [  246.724866]  [<ffffffff81533aad>] cpufreq_cpu_get+0x7d/0xf0
> [  246.724874]  [<ffffffff81533c41>] cpufreq_get_policy+0x21/0x120
> [  246.724882]  [<ffffffff81533d8b>] store_scaling_governor+0x4b/0x1f0
> [  246.724890]  [<ffffffff8118d37a>] ? link_path_walk+0x23a/0x8d0
> [  246.724897]  [<ffffffff8119fae9>] ? mntput_no_expire+0x49/0x160
> [  246.724902]  [<ffffffff8119fc24>] ? mntput+0x24/0x40
> [  246.724911]  [<ffffffff81533000>] store+0x70/0xb0
> [  246.724919]  [<ffffffff811f2582>] sysfs_write_file+0xe2/0x170
> [  246.724927]  [<ffffffff81181e8e>] vfs_write+0xce/0x200
> [  246.724934]  [<ffffffff81182392>] SyS_write+0x52/0xa0
> [  246.724940]  [<ffffffff816838c2>] system_call_fastpath+0x16/0x1b
> [  246.724961] INFO: task gnome-keyring-d:2989 blocked for more than
> 120 seconds.
> [  246.724963] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> disables this message.
> [  246.724966] gnome-keyring-d D 0000000000000000     0  2989      1 0x00000000
> [  246.724971]  ffff8800cb933e38 0000000000000086 00000000000000dc
> 0000000000000004
> [  246.724977]  ffff88002e548000 ffff8800cb933fd8 ffff8800cb933fd8
> ffff8800cb933fd8
> [  246.724982]  ffff8800301fae00 ffff88002e548000 ffff88010fbb6b40
> ffffffff81c31b88
> [  246.724988] Call Trace:
> [  246.724994]  [<ffffffff81679c39>] schedule+0x29/0x70
> [  246.724999]  [<ffffffff81679f1e>] schedule_preempt_disabled+0xe/0x10
> [  246.725007]  [<ffffffff816781d2>] __mutex_lock_slowpath+0x112/0x1b0
> [  246.725016]  [<ffffffff81133780>] ? __pagevec_release+0x40/0x40
> [  246.725024]  [<ffffffff816776ca>] mutex_lock+0x2a/0x41
> [  246.725030]  [<ffffffff8104d19c>] get_online_cpus+0x2c/0x50
> [  246.725038]  [<ffffffff810693d9>] schedule_on_each_cpu+0x39/0x110
> [  246.725047]  [<ffffffff811337a5>] lru_add_drain_all+0x15/0x20
> [  246.725055]  [<ffffffff81150dd8>] SyS_mlock+0x38/0x130
> [  246.725061]  [<ffffffff816838c2>] system_call_fastpath+0x16/0x1b
> [  246.725083] INFO: task sh:3952 blocked for more than 120 seconds.
> [  246.725086] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> disables this message.
> [  246.725089] sh              D ffffffff8180ff20     0  3952   3947 0x00000004
> [  246.725093]  ffff8800ccd3bbd8 0000000000000082 0000000000000000
> 0000000000000001
> [  246.725099]  ffff8800cb0c9700 ffff8800ccd3bfd8 ffff8800ccd3bfd8
> ffff8800ccd3bfd8
> [  246.725105]  ffff880118c5c500 ffff8800cb0c9700 ffffffff81142619
> ffffffff81c31b40
> [  246.725110] Call Trace:
> [  246.725119]  [<ffffffff81142619>] ? zone_statistics+0x99/0xc0
> [  246.725124]  [<ffffffff81679c39>] schedule+0x29/0x70
> [  246.725129]  [<ffffffff81679f1e>] schedule_preempt_disabled+0xe/0x10
> [  246.725137]  [<ffffffff816781d2>] __mutex_lock_slowpath+0x112/0x1b0
> [  246.725145]  [<ffffffff816776ca>] mutex_lock+0x2a/0x41
> [  246.725151]  [<ffffffff8104d1f5>] cpu_maps_update_begin+0x15/0x20
> [  246.725157]  [<ffffffff8104d53e>] cpu_hotplug_disable+0xe/0x20
> [  246.725165]  [<ffffffff81533aad>] cpufreq_cpu_get+0x7d/0xf0
> [  246.725172]  [<ffffffff81533c41>] cpufreq_get_policy+0x21/0x120
> [  246.725180]  [<ffffffff8153400f>] store_scaling_min_freq+0x3f/0xa0
> [  246.725190]  [<ffffffff816785e6>] ? down_write+0x16/0x40
> [  246.725197]  [<ffffffff81533000>] store+0x70/0xb0
> [  246.725205]  [<ffffffff811f2582>] sysfs_write_file+0xe2/0x170
> [  246.725212]  [<ffffffff81181e8e>] vfs_write+0xce/0x200
> [  246.725219]  [<ffffffff81182392>] SyS_write+0x52/0xa0
> [  246.725225]  [<ffffffff816838c2>] system_call_fastpath+0x16/0x1b
> [  246.725229] INFO: task sh:3953 blocked for more than 120 seconds.
> [  246.725232] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> disables this message.
> [  246.725234] sh              D ffffffff8180fb60     0  3953   3952 0x00000004
> [  246.725239]  ffff8800ccd9dbf8 0000000000000082 ffffffff81116bcf
> ffff880119398000
> [  246.725245]  ffff8800c9f65c00 ffff8800ccd9dfd8 ffff8800ccd9dfd8
> ffff8800ccd9dfd8
> [  246.725251]  ffff880119358000 ffff8800c9f65c00 ffff8800ccd9dcc8
> ffffffff81c31b40
> [  246.725256] Call Trace:
> [  246.725266]  [<ffffffff81116bcf>] ? update_group_times+0xf/0x40
> [  246.725272]  [<ffffffff81679c39>] schedule+0x29/0x70
> [  246.725277]  [<ffffffff81679f1e>] schedule_preempt_disabled+0xe/0x10
> [  246.725285]  [<ffffffff816781d2>] __mutex_lock_slowpath+0x112/0x1b0
> [  246.725293]  [<ffffffff816776ca>] mutex_lock+0x2a/0x41
> [  246.725298]  [<ffffffff8104d1f5>] cpu_maps_update_begin+0x15/0x20
> [  246.725304]  [<ffffffff8104d53e>] cpu_hotplug_disable+0xe/0x20
> [  246.725312]  [<ffffffff81533aad>] cpufreq_cpu_get+0x7d/0xf0
> [  246.725320]  [<ffffffff8153549d>] cpufreq_stats_free_sysfs+0x1d/0x80
> [  246.725328]  [<ffffffff8153559f>] cpufreq_stat_cpu_callback+0x2f/0x40
> [  246.725336]  [<ffffffff8167f17d>] notifier_call_chain+0x4d/0x70
> [  246.725346]  [<ffffffff8107508e>] __raw_notifier_call_chain+0xe/0x10
> [  246.725351]  [<ffffffff8104d0d0>] __cpu_notify+0x20/0x40
> [  246.725358]  [<ffffffff81667171>] _cpu_down+0x81/0x250
> [  246.725364]  [<ffffffff81667375>] cpu_down+0x35/0x50
> [  246.725370]  [<ffffffff8141b9c1>] cpu_subsys_offline+0x21/0x40
> [  246.725377]  [<ffffffff81416f45>] device_offline+0xa5/0xd0
> [  246.725384]  [<ffffffff8141704e>] store_online+0x3e/0x80
> [  246.725390]  [<ffffffff81414568>] dev_attr_store+0x18/0x30
> [  246.725397]  [<ffffffff811f2582>] sysfs_write_file+0xe2/0x170
> [  246.725404]  [<ffffffff81181e8e>] vfs_write+0xce/0x200
> [  246.725411]  [<ffffffff81182392>] SyS_write+0x52/0xa0
> [  246.725419]  [<ffffffff8167f12e>] ? do_page_fault+0xe/0x10
> [  246.725425]  [<ffffffff816838c2>] system_call_fastpath+0x16/0x1b
> [  366.756425] INFO: task irqbalance:1052 blocked for more than 120 seconds.
> [  366.756435] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> disables this message.
> [  366.756440] irqbalance      D 0000000000000000     0  1052      1 0x00000000
> [  366.756450]  ffff88002f2dfd78 0000000000000086 ffff88002e53b800
> 0000000000000001
> [  366.756459]  ffff880030620000 ffff88002f2dffd8 ffff88002f2dffd8
> ffff88002f2dffd8
> [  366.756465]  ffff880030181700 ffff880030620000 ffff8800ccbfd698
> ffffffff81c981c0
> [  366.756472] Call Trace:
> [  366.756486]  [<ffffffff81679c39>] schedule+0x29/0x70
> [  366.756493]  [<ffffffff81679f1e>] schedule_preempt_disabled+0xe/0x10
> [  366.756504]  [<ffffffff816781d2>] __mutex_lock_slowpath+0x112/0x1b0
> [  366.756513]  [<ffffffff816776ca>] mutex_lock+0x2a/0x41
> [  366.756522]  [<ffffffff81416e15>] lock_device_hotplug+0x15/0x20
> [  366.756528]  [<ffffffff81416e60>] show_online+0x20/0x60
> [  366.756535]  [<ffffffff81415ab0>] dev_attr_show+0x20/0x60
> [  366.756544]  [<ffffffff81129a3e>] ? __get_free_pages+0xe/0x40
> [  366.756553]  [<ffffffff811f2c9a>] sysfs_read_file+0xaa/0x180
> [  366.756564]  [<ffffffff81182074>] vfs_read+0xb4/0x180
> [  366.756571]  [<ffffffff811822f2>] SyS_read+0x52/0xa0
> [  366.756579]  [<ffffffff816838c2>] system_call_fastpath+0x16/0x1b
> [  366.756593] INFO: task preload:1731 blocked for more than 120 seconds.
> [  366.756596] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> disables this message.
> [  366.756599] preload         D ffffffff8180fb60     0  1731      1 0x00000000
> [  366.756605]  ffff8800cca71d28 0000000000000086 ffff8800cca71cc8
> ffffffff8118bafd
> [  366.756611]  ffff88002e7dc500 ffff8800cca71fd8 ffff8800cca71fd8
> ffff8800cca71fd8
> [  366.756617]  ffff880119359700 ffff88002e7dc500 ffff880119408240
> ffffffff81c31b88
> [  366.756623] Call Trace:
> [  366.756631]  [<ffffffff8118bafd>] ? terminate_walk+0x3d/0x50
> [  366.756637]  [<ffffffff81679c39>] schedule+0x29/0x70
> [  366.756643]  [<ffffffff81679f1e>] schedule_preempt_disabled+0xe/0x10
> [  366.756652]  [<ffffffff816781d2>] __mutex_lock_slowpath+0x112/0x1b0
> [  366.756659]  [<ffffffff8118ba72>] ? path_put+0x22/0x30
> [  366.756667]  [<ffffffff816776ca>] mutex_lock+0x2a/0x41
> [  366.756674]  [<ffffffff8104d19c>] get_online_cpus+0x2c/0x50
> [  366.756684]  [<ffffffff8114196a>] all_vm_events+0x1a/0x120
> [  366.756692]  [<ffffffff81141b05>] vmstat_start+0x95/0xc0
> [  366.756700]  [<ffffffff811a3739>] seq_read+0x139/0x3e0
> [  366.756709]  [<ffffffff812acbb3>] ? security_file_permission+0xa3/0xc0
> [  366.756717]  [<ffffffff811e4083>] proc_reg_read+0x43/0x70
> [  366.756725]  [<ffffffff81182074>] vfs_read+0xb4/0x180
> [  366.756732]  [<ffffffff811822f2>] SyS_read+0x52/0xa0
> [  366.756738]  [<ffffffff816838c2>] system_call_fastpath+0x16/0x1b
> [  366.756743] INFO: task ondemand:1867 blocked for more than 120 seconds.
> [  366.756745] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> disables this message.
> [  366.756748] ondemand        D ffffffff8180fb60     0  1867      1 0x00000000
> [  366.756753]  ffff8800d66c3ba8 0000000000000082 ffff8800d66c3be8
> ffffffff811c0ba2
> [  366.756759]  ffff88002f1a0000 ffff8800d66c3fd8 ffff8800d66c3fd8
> ffff8800d66c3fd8
> [  366.756765]  ffffffff81c10440 ffff88002f1a0000 0000000000000000
> ffffffff81c31b40
> [  366.756771] Call Trace:
> [  366.756779]  [<ffffffff811c0ba2>] ? fsnotify+0x1d2/0x2b0
> [  366.756785]  [<ffffffff81679c39>] schedule+0x29/0x70
> [  366.756790]  [<ffffffff81679f1e>] schedule_preempt_disabled+0xe/0x10
> [  366.756798]  [<ffffffff816781d2>] __mutex_lock_slowpath+0x112/0x1b0
> [  366.756806]  [<ffffffff816776ca>] mutex_lock+0x2a/0x41
> [  366.756813]  [<ffffffff8104d1f5>] cpu_maps_update_begin+0x15/0x20
> [  366.756819]  [<ffffffff8104d53e>] cpu_hotplug_disable+0xe/0x20
> [  366.756828]  [<ffffffff81533aad>] cpufreq_cpu_get+0x7d/0xf0
> [  366.756836]  [<ffffffff81533c41>] cpufreq_get_policy+0x21/0x120
> [  366.756845]  [<ffffffff81533d8b>] store_scaling_governor+0x4b/0x1f0
> [  366.756852]  [<ffffffff8118d37a>] ? link_path_walk+0x23a/0x8d0
> [  366.756859]  [<ffffffff8119fae9>] ? mntput_no_expire+0x49/0x160
> [  366.756865]  [<ffffffff8119fc24>] ? mntput+0x24/0x40
> [  366.756874]  [<ffffffff81533000>] store+0x70/0xb0
> [  366.756882]  [<ffffffff811f2582>] sysfs_write_file+0xe2/0x170
> [  366.756889]  [<ffffffff81181e8e>] vfs_write+0xce/0x200
> [  366.756896]  [<ffffffff81182392>] SyS_write+0x52/0xa0
> [  366.756903]  [<ffffffff816838c2>] system_call_fastpath+0x16/0x1b
> [  366.756922] INFO: task gnome-keyring-d:2989 blocked for more than
> 120 seconds.
> [  366.756925] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> disables this message.
> [  366.756927] gnome-keyring-d D 0000000000000000     0  2989      1 0x00000000
> [  366.756932]  ffff8800cb933e38 0000000000000086 00000000000000dc
> 0000000000000004
> [  366.756938]  ffff88002e548000 ffff8800cb933fd8 ffff8800cb933fd8
> ffff8800cb933fd8
> [  366.756944]  ffff8800301fae00 ffff88002e548000 ffff88010fbb6b40
> ffffffff81c31b88
> [  366.756949] Call Trace:
> [  366.756955]  [<ffffffff81679c39>] schedule+0x29/0x70
> [  366.756961]  [<ffffffff81679f1e>] schedule_preempt_disabled+0xe/0x10
> [  366.756969]  [<ffffffff816781d2>] __mutex_lock_slowpath+0x112/0x1b0
> [  366.756978]  [<ffffffff81133780>] ? __pagevec_release+0x40/0x40
> [  366.756986]  [<ffffffff816776ca>] mutex_lock+0x2a/0x41
> [  366.756991]  [<ffffffff8104d19c>] get_online_cpus+0x2c/0x50
> [  366.757000]  [<ffffffff810693d9>] schedule_on_each_cpu+0x39/0x110
> [  366.757008]  [<ffffffff811337a5>] lru_add_drain_all+0x15/0x20
> [  366.757016]  [<ffffffff81150dd8>] SyS_mlock+0x38/0x130
> [  366.757022]  [<ffffffff816838c2>] system_call_fastpath+0x16/0x1b
> 
> 
> 
> And that's why I am confused about how to solve it :)
> 
> I thought when a CPU is going down its /sys/devices/system/cpu/cpuX/
> directory should be locked/freezed and no other thread should be reading
> from this directory at that point..
> 
> @Srivatsa: Can you share your knowledge here on this?
> 

Sorry for the late reply. I was on vacation for some time and it took
me a while to catch up on things.

Looking at the patches you have sent out, I think the first one[1] is
required, but the second one[2] isn't helpful. I have an alternative
fix that I'll propose as a reply to that thread.

Coming to the problem above, calling cpu_hotplug_disable/enable for
general hotplug synchronization is a bad idea. You must use
get/put_online_cpus() instead. I had sent out a patch to add a comment
pointing this out [3], but that didn't go upstream since it was part of
a larger patchset etc. Maybe I should break it out and send it separately.

And IMHO the kref_get race can be fixed by using get/put_online_cpus()
instead of your second patch[2].

[1]. https://patchwork.kernel.org/patch/2852463/
[2]. https://patchwork.kernel.org/patch/2852464/
[3]. https://patchwork.kernel.org/patch/2795771/

Regards,
Srivatsa S. Bhat

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ