diff mbox

btrfs: initialize the seq counter in struct btrfs_device

Message ID 1452865035-19681-1-git-send-email-bigeasy@linutronix.de (mailing list archive)
State Accepted
Headers show

Commit Message

Sebastian Andrzej Siewior Jan. 15, 2016, 1:37 p.m. UTC
I managed to trigger this:
| INFO: trying to register non-static key.
| the code is fine but needs lockdep annotation.
| turning off the locking correctness validator.
| CPU: 1 PID: 781 Comm: systemd-gpt-aut Not tainted 4.4.0-rt2+ #14
| Hardware name: ARM-Versatile Express
| [<80307cec>] (dump_stack)
| [<80070e98>] (__lock_acquire)
| [<8007184c>] (lock_acquire)
| [<80287800>] (btrfs_ioctl)
| [<8012a8d4>] (do_vfs_ioctl)
| [<8012ac14>] (SyS_ioctl)

so I think that btrfs_device_data_ordered_init() is not invoked behind
a macro somewhere.

Fixes: 7cc8e58d53cd ("Btrfs: fix unprotected device's variants on 32bits machine")
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 fs/btrfs/volumes.c | 1 +
 1 file changed, 1 insertion(+)

Comments

David Sterba Jan. 15, 2016, 6:16 p.m. UTC | #1
On Fri, Jan 15, 2016 at 02:37:15PM +0100, Sebastian Andrzej Siewior wrote:
> I managed to trigger this:
> | INFO: trying to register non-static key.
> | the code is fine but needs lockdep annotation.
> | turning off the locking correctness validator.
> | CPU: 1 PID: 781 Comm: systemd-gpt-aut Not tainted 4.4.0-rt2+ #14
> | Hardware name: ARM-Versatile Express
> | [<80307cec>] (dump_stack)
> | [<80070e98>] (__lock_acquire)
> | [<8007184c>] (lock_acquire)
> | [<80287800>] (btrfs_ioctl)
> | [<8012a8d4>] (do_vfs_ioctl)
> | [<8012ac14>] (SyS_ioctl)
> 
> so I think that btrfs_device_data_ordered_init() is not invoked behind
> a macro somewhere.

Right, and it hasn't been invoked anywhere  since it's introduction.
Accidentally working because the initial value is 0 (and the device
struct is zeroed), but the lockdep structure is not valid.

> Fixes: 7cc8e58d53cd ("Btrfs: fix unprotected device's variants on 32bits machine")
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>

Reviewed-by: David Sterba <dsterba@suse.com>
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index a23399e8e3ab..1fc2e13fc2c1 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -232,6 +232,7 @@  static struct btrfs_device *__alloc_device(void)
 	spin_lock_init(&dev->reada_lock);
 	atomic_set(&dev->reada_in_flight, 0);
 	atomic_set(&dev->dev_stats_ccnt, 0);
+	btrfs_device_data_ordered_init(dev);
 	INIT_RADIX_TREE(&dev->reada_zones, GFP_NOFS & ~__GFP_DIRECT_RECLAIM);
 	INIT_RADIX_TREE(&dev->reada_extents, GFP_NOFS & ~__GFP_DIRECT_RECLAIM);