Received: by 10.192.165.156 with SMTP id m28csp442195imm; Tue, 17 Apr 2018 12:52:28 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+8wP3Lwdl9d/EjgJQsUh84d6fl5aqsuvfm4zp+13DNJR0DukkG61aTwcsYOnJafs9F3pxc X-Received: by 2002:a17:902:6949:: with SMTP id k9-v6mr3251950plt.185.1523994748782; Tue, 17 Apr 2018 12:52:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523994748; cv=none; d=google.com; s=arc-20160816; b=KlcAo+mRucBxDoirwhvGDMHb/67EqJHT6tbflfPRkX8DR/jxqCidC6AO9QMRo6ri2O LfMNmoeCPR7QstcwE0HW+G8Z6Vg4dFsbsNewXIOGd0WdhnRuPPnRs3dvCSCqe/weabwG ysk63rnJkHa3BV1X0UymVpWBrz2cUYGESv3dRuju22Zp+tXVXkcOjqnd7EMDrqhs5a7e DROrTk7OFYlh2oQVIl0LDepgcwd1w9JnbVZLuHZVgFV4ddUcDWOrzD6WVMvVyn/Ae0JQ /BjnamFbrZb2cg1hDAkBd29BGZqRqx4/r7A/a6F+ZlxGaowpMaPGpty6eUtw97GIbhkd FRhw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=EbEu/eehtQmPaH7i5FSnVENIN5/B+8Hdz3n4/Z7Zlck=; b=n/nzkJ41DsiaHqKhwCBOOWrsJO6T37cALnapT/LpnS1rARcQ5yK5g9DUFPhPdE88JN wQJzkhxJeFose7kESsn1FuY5qREq5mK07d/jq7dkBX033XFC8YZjfIokNnccPR7AJ887 OrTkXQ99UvrkJdiYsu3JwEkYpuK36adMQYb1BD8fTH0R/CdXX4frETmHHtDZoBZqOm3R 4IBSF6ICZUWASm8l0me5Ckjoak1JMk0DLTA0N5RaW1+q81toKYPBEX8YBTO8TwTVwXZK sirqeLEJaXI+8dXXhhLjIJYQHvyF2+b17O/LlmRzuAfKHeumdB4FEkza7DxIXf3Meiq6 LIYA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=uBbQqYdi; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c87si11814266pfd.89.2018.04.17.12.52.13; Tue, 17 Apr 2018 12:52:28 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=uBbQqYdi; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752497AbeDQTvH (ORCPT + 99 others); Tue, 17 Apr 2018 15:51:07 -0400 Received: from mail-yw0-f196.google.com ([209.85.161.196]:45111 "EHLO mail-yw0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751204AbeDQTvF (ORCPT ); Tue, 17 Apr 2018 15:51:05 -0400 Received: by mail-yw0-f196.google.com with SMTP id g9so7380320ywb.12; Tue, 17 Apr 2018 12:51:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=EbEu/eehtQmPaH7i5FSnVENIN5/B+8Hdz3n4/Z7Zlck=; b=uBbQqYdibF15AcuLCxojM8+Xf8iskJYOkaFbH8Bini+LBKtJW7UIdhsNWW/4+cTiRZ rjYev9AA1MUidIsXl7QLixmvniDvmdB+b9PC2pyyWehjYihHO/P3JPkfSJtWtKT10Cxo eM4scg6FB6/+6MPJ9UgXZOUsz9Jkwk98DgifW/yhDA0ko3lXzcZKwhM48/71ZLFrNcxK mEMsFYIviObnO5fhwjPJypyTUsHJJVGCZksUJ0d+V4g4rqdnbniLz9CjrHgIH60fQZDw /EiuC4g/2U4aNgOlMQobHFvDG/Vw7qVDuFsXsaU7Fa52hieDgpw6jAGhvRoAx6dYPvPr qVnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=EbEu/eehtQmPaH7i5FSnVENIN5/B+8Hdz3n4/Z7Zlck=; b=aLgsImFACvAz1ok7mmX87WkHPqiIiMU5yep4vfzJ5wqMtKc2APEfgRcSWnHDSRA5Lx +R59YriUX94ZiEbHl1KLQNEtujwdJvfrlv0IKaeZft0P+5BhWAsj+918+MUno+ct7vtv RNVVNZIAhsOuf8AbZx+FMlbdGkGv3YneEpMaCOGTiSZjaQpSYeybHzk4gBRMKR+KUu0e m34/kxUhvLm+2OGKiO057IPqifdGoupiVa3QJLdE1Nq+w6QAOz/O6Qnh0Xl0Xza346o5 /q16lxIDqEL07jfkBH/3+BuazoWvb55hnzComrZBPx68lxM/SYQNxvpMDgKVOpwEqvwY 2hDg== X-Gm-Message-State: ALQs6tC18u0NgFtAgyzV279n/9QSFpdXWM1DcnPO+EDVtx/DM6Bur2BL r2GouA/A1/4pU3ykn4wZMYvovjYk/8L/mh1SRII= X-Received: by 10.129.112.12 with SMTP id l12mr2464022ywc.181.1523994664099; Tue, 17 Apr 2018 12:51:04 -0700 (PDT) MIME-Version: 1.0 Received: by 10.129.183.12 with HTTP; Tue, 17 Apr 2018 12:51:03 -0700 (PDT) In-Reply-To: <20180412150826.20988-17-mszeredi@redhat.com> References: <20180412150826.20988-1-mszeredi@redhat.com> <20180412150826.20988-17-mszeredi@redhat.com> From: Amir Goldstein Date: Tue, 17 Apr 2018 22:51:03 +0300 Message-ID: Subject: Re: [RFC PATCH 16/35] ovl: readd lsattr/chattr support To: Miklos Szeredi Cc: overlayfs , linux-fsdevel , linux-kernel Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Apr 12, 2018 at 6:08 PM, Miklos Szeredi wrote: > Implement FS_IOC_GETFLAGS and FS_IOC_SETFLAGS. > > Needs vfs_ioctl() exported to modules. > > Signed-off-by: Miklos Szeredi > --- > fs/internal.h | 1 - > fs/ioctl.c | 1 + > fs/overlayfs/file.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++ > include/linux/fs.h | 2 ++ > 4 files changed, 62 insertions(+), 1 deletion(-) > > diff --git a/fs/internal.h b/fs/internal.h > index 3319bf39e339..d5108d9c6a2f 100644 > --- a/fs/internal.h > +++ b/fs/internal.h > @@ -176,7 +176,6 @@ extern const struct dentry_operations ns_dentry_operations; > */ > extern int do_vfs_ioctl(struct file *file, unsigned int fd, unsigned int cmd, > unsigned long arg); > -extern long vfs_ioctl(struct file *file, unsigned int cmd, unsigned long arg); > > /* > * iomap support: > diff --git a/fs/ioctl.c b/fs/ioctl.c > index 5ace7efb0d04..696f4c46a868 100644 > --- a/fs/ioctl.c > +++ b/fs/ioctl.c > @@ -49,6 +49,7 @@ long vfs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) > out: > return error; > } > +EXPORT_SYMBOL(vfs_ioctl); > > static int ioctl_fibmap(struct file *filp, int __user *p) > { > diff --git a/fs/overlayfs/file.c b/fs/overlayfs/file.c > index 05e3e2f80b89..cc004ff1b05b 100644 > --- a/fs/overlayfs/file.c > +++ b/fs/overlayfs/file.c > @@ -8,6 +8,7 @@ > > #include > #include > +#include > #include > #include > #include "overlayfs.h" > @@ -291,6 +292,63 @@ long ovl_fallocate(struct file *file, int mode, loff_t offset, loff_t len) > return ret; > } > > +static long ovl_real_ioctl(struct file *file, unsigned int cmd, > + unsigned long arg) > +{ > + struct fd real; > + const struct cred *old_cred; > + long ret; > + > + ret = ovl_real_file(file, &real); > + if (ret) > + return ret; > + > + old_cred = ovl_override_creds(file_inode(file)->i_sb); > + ret = vfs_ioctl(real.file, cmd, arg); > + revert_creds(old_cred); > + > + fdput(real); > + > + return ret; > +} > + > +long ovl_ioctl(struct file *file, unsigned int cmd, unsigned long arg) > +{ > + long ret; > + struct inode *inode = file_inode(file); > + > + switch (cmd) { > + case FS_IOC_GETFLAGS: > + ret = ovl_real_ioctl(file, cmd, arg); > + break; > + > + case FS_IOC_SETFLAGS: > + if (!inode_owner_or_capable(inode)) > + return -EACCES; > + > + ret = mnt_want_write_file(file); > + if (ret) > + return ret; > + > + ret = ovl_copy_up(file_dentry(file)); > + if (!ret) { > + ret = ovl_real_ioctl(file, cmd, arg); > + I got this lockdep splat with overlayfs-rorw and overlay/040, but I don't see the problem in the patch: overlay/040 [19:29:01][ 7.414427] [ 7.415349] ============================================ [ 7.417863] WARNING: possible recursive locking detected [ 7.419652] 4.16.0-rc7-xfstests-00054-g1b18a246f764-dirty #3233 Not tainted [ 7.421517] -------------------------------------------- [ 7.422736] chattr/2376 is trying to acquire lock: [ 7.423843] (sb_writers#10){.+.+}, at: [<000000003170ac81>] mnt_want_write_file+0x21/0x4a [ 7.425683] [ 7.425683] but task is already holding lock: [ 7.427397] (sb_writers#10){.+.+}, at: [<000000003170ac81>] mnt_want_write_file+0x21/0x4a [ 7.430180] [ 7.430180] other info that might help us debug this: [ 7.432511] Possible unsafe locking scenario: [ 7.432511] [ 7.433860] CPU0 [ 7.434424] ---- [ 7.434987] lock(sb_writers#10); [ 7.435768] lock(sb_writers#10); [ 7.436692] [ 7.436692] *** DEADLOCK *** [ 7.436692] [ 7.438460] May be due to missing lock nesting notation [ 7.438460] [ 7.440477] 1 lock held by chattr/2376: [ 7.441876] #0: (sb_writers#10){.+.+}, at: [<000000003170ac81>] mnt_want_write_file+0x21/0x4a [ 7.444537] [ 7.444537] stack backtrace: [ 7.445881] CPU: 1 PID: 2376 Comm: chattr Not tainted 4.16.0-rc7-xfstests-00054-g1b18a246f764-dirty #3233 [ 7.449594] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Ubuntu-1.8.2-1ubuntu1 04/01/2014 [ 7.453121] Call Trace: [ 7.453945] dump_stack+0x7c/0xb2 [ 7.454957] validate_chain.isra.24+0x6da/0x8af [ 7.456341] __lock_acquire+0x5e6/0x67b [ 7.457643] ? __lock_acquire+0x5e6/0x67b [ 7.458879] lock_acquire+0x139/0x1dd [ 7.459988] ? mnt_want_write_file+0x21/0x4a [ 7.461317] __sb_start_write+0x91/0x163 [ 7.462500] ? mnt_want_write_file+0x21/0x4a [ 7.463822] mnt_want_write_file+0x21/0x4a [ 7.465091] xfs_ioc_setxflags+0x70/0xe5 [ 7.466266] xfs_file_ioctl+0x4a7/0xa90 [ 7.467452] ? __lock_acquire+0x5e6/0x67b [ 7.468681] ? terminate_walk+0x20/0xd9 [ 7.469835] ? __lock_is_held+0x40/0x71 [ 7.471012] vfs_ioctl+0x1e/0x2b [ 7.472008] ovl_real_ioctl+0x45/0x71 [ 7.473122] ovl_ioctl+0x9a/0xf2 [ 7.474114] vfs_ioctl+0x1e/0x2b [ 7.475149] do_vfs_ioctl+0x579/0x5f1 [ 7.476341] ? entry_SYSCALL_64_after_hwframe+0x52/0xb7 [ 7.477765] SyS_ioctl+0x52/0x74 [ 7.479041] do_syscall_64+0x76/0x182 [ 7.480419] entry_SYSCALL_64_after_hwframe+0x42/0xb7 [ 7.482536] RIP: 0033:0x7fde8d270dd7 [ 7.483919] RSP: 002b:00007ffde2ae7e98 EFLAGS: 00000246 ORIG_RAX: 0000000000000010 [ 7.486862] RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00007fde8d270dd7 [ 7.489554] RDX: 00007ffde2ae7eac RSI: 0000000040086602 RDI: 0000000000000003 [ 7.492227] RBP: 0000000000000010 R08: 0000000000000000 R09: 0000000000000001 [ 7.494922] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000001 [ 7.497642] R13: 00007ffde2ae81a0 R14: 00007ffde2ae8188 R15: 0000000000000000 [ 7.540886] XFS (vdf): Mounting V5 Filesystem [ 7.563795] XFS (vdf): Ending clean mount Thanks, Amir.