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] [thread-next>] [day] [month] [year] [list]
Date:	Fri, 21 Nov 2014 09:30:36 -0500
From:	Pranith Kumar <bobby.prani@...il.com>
To:	"Kirill A. Shutemov" <kirill@...temov.name>,
	"Paul E. McKenney" <paulmck@...ux.vnet.ibm.com>
CC:	linux-kernel@...r.kernel.org, mingo@...nel.org,
	laijs@...fujitsu.com, dipankar@...ibm.com,
	akpm@...ux-foundation.org, mathieu.desnoyers@...icios.com,
	josh@...htriplett.org, tglx@...utronix.de, peterz@...radead.org,
	rostedt@...dmis.org, dhowells@...hat.com, edumazet@...gle.com,
	dvhart@...ux.intel.com, fweisbec@...il.com, oleg@...hat.com
Subject: Re: [PATCH tip/core/rcu 3/9] drivers/md: Use rcu_dereference() for
 accessing rcu pointer

On 11/21/2014 08:31 AM, Kirill A. Shutemov wrote:
> On Tue, Oct 28, 2014 at 03:09:56PM -0700, Paul E. McKenney wrote:
>> From: Pranith Kumar <bobby.prani@...il.com>
>>
>> Got Paul's email wrong the first time.
>>
>> The map field in 'struct mapped_device' is an rcu pointer. Use rcu_dereference()
>> while accessing it.
>>
>> Signed-off-by: Pranith Kumar <bobby.prani@...il.com>
>> Signed-off-by: Paul E. McKenney <paulmck@...ux.vnet.ibm.com>
> 
> On current -next I see this:
> 
> [    6.388264] ===============================
> [    6.389571] [ INFO: suspicious RCU usage. ]
> [    6.390869] 3.18.0-rc5-next-20141121-08303-g44cae4530372 #2 Not tainted
> [    6.392185] -------------------------------
> [    6.393479] /home/kas/git/public/linux/drivers/md/dm.c:2853 suspicious rcu_dereference_check() usage!
> [    6.394801] 
> other info that might help us debug this:
> 

Hi Kirill,

We are dereferencing an RCU pointer with the suspend_lock held which is causing this warning.

Can you please check if the following patch helps? Thanks!

diff --git a/drivers/md/dm.c b/drivers/md/dm.c
index a0ece87..e584e66 100644
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
@@ -2830,7 +2830,7 @@ static int __dm_suspend(struct mapped_device *md, struct dm_table *map,
  */
 int dm_suspend(struct mapped_device *md, unsigned suspend_flags)
 {
-       struct dm_table *map = NULL;
+       struct dm_table *map = rcu_dereference(md->map);
        int r = 0;
 
 retry:
@@ -2850,8 +2850,6 @@ retry:
                goto retry;
        }
 
-       map = rcu_dereference(md->map);
-
        r = __dm_suspend(md, map, suspend_flags, TASK_INTERRUPTIBLE);
        if (r)
                goto out_unlock;



> [    6.398714] 
> rcu_scheduler_active = 1, debug_locks = 0
> [    6.401247] 1 lock held by cryptsetup/159:
> [    6.402522]  #0:  (&md->suspend_lock/1){+.+...}, at: [<ffffffff8179dd1d>] dm_suspend+0x3d/0x140
> [    6.403848] 
> stack backtrace:
> [    6.406448] CPU: 3 PID: 159 Comm: cryptsetup Not tainted 3.18.0-rc5-next-20141121-08303-g44cae4530372 #2
> [    6.407726] Hardware name: LENOVO 3460CC6/3460CC6, BIOS G6ET93WW (2.53 ) 02/04/2013
> [    6.408982]  0000000000000001 ffff8800d3ac7c38 ffffffff81b00bbd 0000000000000011
> [    6.410249]  ffff8800d301a560 ffff8800d3ac7c68 ffffffff81153be7 ffff8800d3928800
> [    6.411548]  ffff8800d3928970 ffff8800d3928aa0 0000000000000001 ffff8800d3ac7ca8
> [    6.412780] Call Trace:
> [    6.413980]  [<ffffffff81b00bbd>] dump_stack+0x4c/0x6e
> [    6.415178]  [<ffffffff81153be7>] lockdep_rcu_suspicious+0xe7/0x120
> [    6.416364]  [<ffffffff8179de1d>] dm_suspend+0x13d/0x140
> [    6.417535]  [<ffffffff817a2d80>] ? table_load+0x340/0x340
> [    6.418749]  [<ffffffff817a2f2b>] dev_suspend+0x1ab/0x260
> [    6.419901]  [<ffffffff817a2d80>] ? table_load+0x340/0x340
> [    6.421038]  [<ffffffff817a3781>] ctl_ioctl+0x251/0x540
> [    6.422164]  [<ffffffff812b6415>] ? mntput_no_expire+0x5/0x360
> [    6.423280]  [<ffffffff817a3a83>] dm_ctl_ioctl+0x13/0x20
> [    6.424389]  [<ffffffff812a6f98>] do_vfs_ioctl+0x308/0x540
> [    6.425515]  [<ffffffff81175d2d>] ? rcu_read_lock_held+0x6d/0x70
> [    6.426601]  [<ffffffff812b324e>] ? __fget_light+0xbe/0xd0
> [    6.427686]  [<ffffffff812a7251>] SyS_ioctl+0x81/0xa0
> [    6.428760]  [<ffffffff81b0d6ad>] system_call_fastpath+0x16/0x1b
> 

--
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