[<prev] [next>] [day] [month] [year] [list]
Message-ID: <202203230347.wUvYT0j0-lkp@intel.com>
Date: Wed, 23 Mar 2022 03:39:30 +0800
From: kernel test robot <lkp@...el.com>
To: Amir Goldstein <amir73il@...il.com>
Cc: kbuild-all@...ts.01.org, linux-kernel@...r.kernel.org
Subject: [amir73il:fan_evictable 8/8]
fs/notify/fanotify/fanotify_user.c:1568:13: warning: variable 'ret' set but
not used
tree: https://github.com/amir73il/linux fan_evictable
head: 124c00a81cb264d633c45154392e0b1835fa7fd2
commit: 124c00a81cb264d633c45154392e0b1835fa7fd2 [8/8] fanotify: introduce FAN_MARK_LARGE for testing
config: ia64-allmodconfig (https://download.01.org/0day-ci/archive/20220323/202203230347.wUvYT0j0-lkp@intel.com/config)
compiler: ia64-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/amir73il/linux/commit/124c00a81cb264d633c45154392e0b1835fa7fd2
git remote add amir73il https://github.com/amir73il/linux
git fetch --no-tags amir73il fan_evictable
git checkout 124c00a81cb264d633c45154392e0b1835fa7fd2
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=ia64 SHELL=/bin/bash fs/notify/fanotify/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>
All warnings (new ones prefixed by >>):
fs/notify/fanotify/fanotify_user.c: In function 'do_fanotify_mark':
fs/notify/fanotify/fanotify_user.c:1637:37: error: expected ')' before 'goto'
1637 | flags & FAN_MARK_LARGE)
| ^
| )
1638 | goto fput_and_out;
| ~~~~
fs/notify/fanotify/fanotify_user.c:1634:12: note: to match this '('
1634 | if ((!capable(CAP_SYS_ADMIN) ||
| ^
fs/notify/fanotify/fanotify_user.c:1767:1: error: expected expression before '}' token
1767 | }
| ^
fs/notify/fanotify/fanotify_user.c:1625:17: error: label 'fput_and_out' used but not defined
1625 | goto fput_and_out;
| ^~~~
>> fs/notify/fanotify/fanotify_user.c:1568:13: warning: variable 'ret' set but not used [-Wunused-but-set-variable]
1568 | int ret;
| ^~~
fs/notify/fanotify/fanotify_user.c:1567:13: warning: unused variable 'umask' [-Wunused-variable]
1567 | u32 umask = 0;
| ^~~~~
fs/notify/fanotify/fanotify_user.c:1566:32: warning: unused variable 'fid_mode' [-Wunused-variable]
1566 | unsigned int obj_type, fid_mode;
| ^~~~~~~~
>> fs/notify/fanotify/fanotify_user.c:1566:22: warning: variable 'obj_type' set but not used [-Wunused-but-set-variable]
1566 | unsigned int obj_type, fid_mode;
| ^~~~~~~~
fs/notify/fanotify/fanotify_user.c:1562:34: warning: unused variable 'fsid' [-Wunused-variable]
1562 | __kernel_fsid_t __fsid, *fsid = NULL;
| ^~~~
fs/notify/fanotify/fanotify_user.c:1562:25: warning: unused variable '__fsid' [-Wunused-variable]
1562 | __kernel_fsid_t __fsid, *fsid = NULL;
| ^~~~~~
fs/notify/fanotify/fanotify_user.c:1561:21: warning: unused variable 'path' [-Wunused-variable]
1561 | struct path path;
| ^~~~
fs/notify/fanotify/fanotify_user.c:1558:26: warning: unused variable 'mnt' [-Wunused-variable]
1558 | struct vfsmount *mnt = NULL;
| ^~~
fs/notify/fanotify/fanotify_user.c:1557:23: warning: unused variable 'inode' [-Wunused-variable]
1557 | struct inode *inode = NULL;
| ^~~~~
fs/notify/fanotify/fanotify_user.c:1767:1: error: control reaches end of non-void function [-Werror=return-type]
1767 | }
| ^
At top level:
fs/notify/fanotify/fanotify_user.c:1538:12: warning: 'fanotify_events_supported' defined but not used [-Wunused-function]
1538 | static int fanotify_events_supported(struct path *path, __u64 mask)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
fs/notify/fanotify/fanotify_user.c:1522:12: warning: 'fanotify_test_fid' defined but not used [-Wunused-function]
1522 | static int fanotify_test_fid(struct dentry *dentry)
| ^~~~~~~~~~~~~~~~~
fs/notify/fanotify/fanotify_user.c:1491:12: warning: 'fanotify_test_fsid' defined but not used [-Wunused-function]
1491 | static int fanotify_test_fsid(struct dentry *dentry, __kernel_fsid_t *fsid)
| ^~~~~~~~~~~~~~~~~~
fs/notify/fanotify/fanotify_user.c:1279:12: warning: 'fanotify_add_inode_mark' defined but not used [-Wunused-function]
1279 | static int fanotify_add_inode_mark(struct fsnotify_group *group,
| ^~~~~~~~~~~~~~~~~~~~~~~
fs/notify/fanotify/fanotify_user.c:1271:12: warning: 'fanotify_add_sb_mark' defined but not used [-Wunused-function]
1271 | static int fanotify_add_sb_mark(struct fsnotify_group *group,
| ^~~~~~~~~~~~~~~~~~~~
fs/notify/fanotify/fanotify_user.c:1263:12: warning: 'fanotify_add_vfsmount_mark' defined but not used [-Wunused-function]
1263 | static int fanotify_add_vfsmount_mark(struct fsnotify_group *group,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
fs/notify/fanotify/fanotify_user.c:1079:12: warning: 'fanotify_remove_inode_mark' defined but not used [-Wunused-function]
1079 | static int fanotify_remove_inode_mark(struct fsnotify_group *group,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
fs/notify/fanotify/fanotify_user.c:1071:12: warning: 'fanotify_remove_sb_mark' defined but not used [-Wunused-function]
1071 | static int fanotify_remove_sb_mark(struct fsnotify_group *group,
| ^~~~~~~~~~~~~~~~~~~~~~~
fs/notify/fanotify/fanotify_user.c:1063:12: warning: 'fanotify_remove_vfsmount_mark' defined but not used [-Wunused-function]
1063 | static int fanotify_remove_vfsmount_mark(struct fsnotify_group *group,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fs/notify/fanotify/fanotify_user.c:951:12: warning: 'fanotify_find_path' defined but not used [-Wunused-function]
951 | static int fanotify_find_path(int dfd, const char __user *filename,
| ^~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +/ret +1568 fs/notify/fanotify/fanotify_user.c
0b3b094ac9a7bb Jan Kara 2019-05-15 1553
183caa3c8668e9 Dominik Brodowski 2018-03-17 1554 static int do_fanotify_mark(int fanotify_fd, unsigned int flags, __u64 mask,
183caa3c8668e9 Dominik Brodowski 2018-03-17 1555 int dfd, const char __user *pathname)
bbaa4168b2d2d8 Eric Paris 2009-12-17 1556 {
0ff21db9fcc390 Eric Paris 2009-12-17 1557 struct inode *inode = NULL;
0ff21db9fcc390 Eric Paris 2009-12-17 1558 struct vfsmount *mnt = NULL;
2a3edf86040a7e Eric Paris 2009-12-17 1559 struct fsnotify_group *group;
2903ff019b346a Al Viro 2012-08-28 1560 struct fd f;
2a3edf86040a7e Eric Paris 2009-12-17 1561 struct path path;
73072283a249c7 Amir Goldstein 2019-01-10 1562 __kernel_fsid_t __fsid, *fsid = NULL;
bdd5a46fe30653 Amir Goldstein 2018-10-04 1563 u32 valid_mask = FANOTIFY_EVENTS | FANOTIFY_EVENT_FLAGS;
23c9deeb3285d3 Amir Goldstein 2018-10-04 1564 unsigned int mark_type = flags & FANOTIFY_MARK_TYPE_BITS;
3ef866536645ce Amir Goldstein 2020-07-16 1565 bool ignored = flags & FAN_MARK_IGNORED_MASK;
d809daf1b6add5 Amir Goldstein 2020-07-16 @1566 unsigned int obj_type, fid_mode;
85af5d9258cc58 Amir Goldstein 2020-07-16 1567 u32 umask = 0;
2903ff019b346a Al Viro 2012-08-28 @1568 int ret;
2a3edf86040a7e Eric Paris 2009-12-17 1569
2a3edf86040a7e Eric Paris 2009-12-17 1570 pr_debug("%s: fanotify_fd=%d flags=%x dfd=%d pathname=%p mask=%llx\n",
2a3edf86040a7e Eric Paris 2009-12-17 1571 __func__, fanotify_fd, flags, dfd, pathname, mask);
2a3edf86040a7e Eric Paris 2009-12-17 1572
2a3edf86040a7e Eric Paris 2009-12-17 1573 /* we only use the lower 32 bits as of right now. */
22d483b9986320 Christian Brauner 2021-03-25 1574 if (upper_32_bits(mask))
2a3edf86040a7e Eric Paris 2009-12-17 1575 return -EINVAL;
2a3edf86040a7e Eric Paris 2009-12-17 1576
23c9deeb3285d3 Amir Goldstein 2018-10-04 1577 if (flags & ~FANOTIFY_MARK_FLAGS)
88380fe66e0ac2 Andreas Gruenbacher 2009-12-17 1578 return -EINVAL;
d54f4fba889b20 Amir Goldstein 2018-09-01 1579
d54f4fba889b20 Amir Goldstein 2018-09-01 1580 switch (mark_type) {
d54f4fba889b20 Amir Goldstein 2018-09-01 1581 case FAN_MARK_INODE:
ac5656d8a4cdd9 Aaron Goidel 2019-08-12 1582 obj_type = FSNOTIFY_OBJ_TYPE_INODE;
ac5656d8a4cdd9 Aaron Goidel 2019-08-12 1583 break;
d54f4fba889b20 Amir Goldstein 2018-09-01 1584 case FAN_MARK_MOUNT:
ac5656d8a4cdd9 Aaron Goidel 2019-08-12 1585 obj_type = FSNOTIFY_OBJ_TYPE_VFSMOUNT;
ac5656d8a4cdd9 Aaron Goidel 2019-08-12 1586 break;
d54f4fba889b20 Amir Goldstein 2018-09-01 1587 case FAN_MARK_FILESYSTEM:
ac5656d8a4cdd9 Aaron Goidel 2019-08-12 1588 obj_type = FSNOTIFY_OBJ_TYPE_SB;
d54f4fba889b20 Amir Goldstein 2018-09-01 1589 break;
d54f4fba889b20 Amir Goldstein 2018-09-01 1590 default:
d54f4fba889b20 Amir Goldstein 2018-09-01 1591 return -EINVAL;
d54f4fba889b20 Amir Goldstein 2018-09-01 1592 }
d54f4fba889b20 Amir Goldstein 2018-09-01 1593
4d92604cc90aa1 Eric Paris 2009-12-17 1594 switch (flags & (FAN_MARK_ADD | FAN_MARK_REMOVE | FAN_MARK_FLUSH)) {
df561f6688fef7 Gustavo A. R. Silva 2020-08-23 1595 case FAN_MARK_ADD:
88380fe66e0ac2 Andreas Gruenbacher 2009-12-17 1596 case FAN_MARK_REMOVE:
1734dee4e3a296 Lino Sanfilippo 2010-11-22 1597 if (!mask)
1734dee4e3a296 Lino Sanfilippo 2010-11-22 1598 return -EINVAL;
cc299a98eb13a9 Heinrich Schuchardt 2014-06-04 1599 break;
4d92604cc90aa1 Eric Paris 2009-12-17 1600 case FAN_MARK_FLUSH:
23c9deeb3285d3 Amir Goldstein 2018-10-04 1601 if (flags & ~(FANOTIFY_MARK_TYPE_BITS | FAN_MARK_FLUSH))
cc299a98eb13a9 Heinrich Schuchardt 2014-06-04 1602 return -EINVAL;
88380fe66e0ac2 Andreas Gruenbacher 2009-12-17 1603 break;
88380fe66e0ac2 Andreas Gruenbacher 2009-12-17 1604 default:
88380fe66e0ac2 Andreas Gruenbacher 2009-12-17 1605 return -EINVAL;
88380fe66e0ac2 Andreas Gruenbacher 2009-12-17 1606 }
8fcd65280abc46 Eric Paris 2010-10-28 1607
6685df31255493 Miklos Szeredi 2017-10-30 1608 if (IS_ENABLED(CONFIG_FANOTIFY_ACCESS_PERMISSIONS))
23c9deeb3285d3 Amir Goldstein 2018-10-04 1609 valid_mask |= FANOTIFY_PERM_EVENTS;
6685df31255493 Miklos Szeredi 2017-10-30 1610
6685df31255493 Miklos Szeredi 2017-10-30 1611 if (mask & ~valid_mask)
2a3edf86040a7e Eric Paris 2009-12-17 1612 return -EINVAL;
2a3edf86040a7e Eric Paris 2009-12-17 1613
3ef866536645ce Amir Goldstein 2020-07-16 1614 /* Event flags (ONDIR, ON_CHILD) are meaningless in ignored mask */
3ef866536645ce Amir Goldstein 2020-07-16 1615 if (ignored)
3ef866536645ce Amir Goldstein 2020-07-16 1616 mask &= ~FANOTIFY_EVENT_FLAGS;
3ef866536645ce Amir Goldstein 2020-07-16 1617
2903ff019b346a Al Viro 2012-08-28 1618 f = fdget(fanotify_fd);
2903ff019b346a Al Viro 2012-08-28 1619 if (unlikely(!f.file))
2a3edf86040a7e Eric Paris 2009-12-17 1620 return -EBADF;
2a3edf86040a7e Eric Paris 2009-12-17 1621
2a3edf86040a7e Eric Paris 2009-12-17 1622 /* verify that this is indeed an fanotify instance */
2a3edf86040a7e Eric Paris 2009-12-17 1623 ret = -EINVAL;
2903ff019b346a Al Viro 2012-08-28 1624 if (unlikely(f.file->f_op != &fanotify_fops))
2a3edf86040a7e Eric Paris 2009-12-17 1625 goto fput_and_out;
2903ff019b346a Al Viro 2012-08-28 1626 group = f.file->private_data;
4231a23530a30e Eric Paris 2010-10-28 1627
7cea2a3c505e87 Amir Goldstein 2021-03-04 1628 /*
a8b98c808eab3e Amir Goldstein 2021-05-24 1629 * An unprivileged user is not allowed to setup mount nor filesystem
a8b98c808eab3e Amir Goldstein 2021-05-24 1630 * marks. This also includes setting up such marks by a group that
a8b98c808eab3e Amir Goldstein 2021-05-24 1631 * was initialized by an unprivileged user.
7cea2a3c505e87 Amir Goldstein 2021-03-04 1632 */
7cea2a3c505e87 Amir Goldstein 2021-03-04 1633 ret = -EPERM;
a8b98c808eab3e Amir Goldstein 2021-05-24 @1634 if ((!capable(CAP_SYS_ADMIN) ||
a8b98c808eab3e Amir Goldstein 2021-05-24 1635 FAN_GROUP_FLAG(group, FANOTIFY_UNPRIV)) &&
124c00a81cb264 Amir Goldstein 2022-03-22 1636 (mark_type != FAN_MARK_INODE ||
124c00a81cb264 Amir Goldstein 2022-03-22 1637 flags & FAN_MARK_LARGE)
7cea2a3c505e87 Amir Goldstein 2021-03-04 1638 goto fput_and_out;
7cea2a3c505e87 Amir Goldstein 2021-03-04 1639
4231a23530a30e Eric Paris 2010-10-28 1640 /*
4231a23530a30e Eric Paris 2010-10-28 1641 * group->priority == FS_PRIO_0 == FAN_CLASS_NOTIF. These are not
4231a23530a30e Eric Paris 2010-10-28 1642 * allowed to set permissions events.
4231a23530a30e Eric Paris 2010-10-28 1643 */
4231a23530a30e Eric Paris 2010-10-28 1644 ret = -EINVAL;
23c9deeb3285d3 Amir Goldstein 2018-10-04 1645 if (mask & FANOTIFY_PERM_EVENTS &&
4231a23530a30e Eric Paris 2010-10-28 1646 group->priority == FS_PRIO_0)
4231a23530a30e Eric Paris 2010-10-28 1647 goto fput_and_out;
2a3edf86040a7e Eric Paris 2009-12-17 1648
9709bd548f11a0 Gabriel Krisman Bertazi 2021-10-25 1649 if (mask & FAN_FS_ERROR &&
9709bd548f11a0 Gabriel Krisman Bertazi 2021-10-25 1650 mark_type != FAN_MARK_FILESYSTEM)
9709bd548f11a0 Gabriel Krisman Bertazi 2021-10-25 1651 goto fput_and_out;
9709bd548f11a0 Gabriel Krisman Bertazi 2021-10-25 1652
615ff7e609bdbc Amir Goldstein 2022-03-22 1653 /*
615ff7e609bdbc Amir Goldstein 2022-03-22 1654 * Evictable is only relevant for inode marks, because only inode object
615ff7e609bdbc Amir Goldstein 2022-03-22 1655 * can be evicted on memory pressure.
615ff7e609bdbc Amir Goldstein 2022-03-22 1656 */
615ff7e609bdbc Amir Goldstein 2022-03-22 1657 if (flags & FAN_MARK_EVICTABLE &&
615ff7e609bdbc Amir Goldstein 2022-03-22 1658 mark_type != FAN_MARK_INODE)
615ff7e609bdbc Amir Goldstein 2022-03-22 1659 goto fput_and_out;
615ff7e609bdbc Amir Goldstein 2022-03-22 1660
235328d1fa4251 Amir Goldstein 2019-01-10 1661 /*
4fe595cf1c80e7 Gabriel Krisman Bertazi 2021-10-25 1662 * Events that do not carry enough information to report
4fe595cf1c80e7 Gabriel Krisman Bertazi 2021-10-25 1663 * event->fd require a group that supports reporting fid. Those
4fe595cf1c80e7 Gabriel Krisman Bertazi 2021-10-25 1664 * events are not supported on a mount mark, because they do not
4fe595cf1c80e7 Gabriel Krisman Bertazi 2021-10-25 1665 * carry enough information (i.e. path) to be filtered by mount
4fe595cf1c80e7 Gabriel Krisman Bertazi 2021-10-25 1666 * point.
235328d1fa4251 Amir Goldstein 2019-01-10 1667 */
d809daf1b6add5 Amir Goldstein 2020-07-16 1668 fid_mode = FAN_GROUP_FLAG(group, FANOTIFY_FID_BITS);
4fe595cf1c80e7 Gabriel Krisman Bertazi 2021-10-25 1669 if (mask & ~(FANOTIFY_FD_EVENTS|FANOTIFY_EVENT_FLAGS) &&
d809daf1b6add5 Amir Goldstein 2020-07-16 1670 (!fid_mode || mark_type == FAN_MARK_MOUNT))
235328d1fa4251 Amir Goldstein 2019-01-10 1671 goto fput_and_out;
235328d1fa4251 Amir Goldstein 2019-01-10 1672
8cc3b1ccd930fe Amir Goldstein 2021-11-29 1673 /*
8cc3b1ccd930fe Amir Goldstein 2021-11-29 1674 * FAN_RENAME uses special info type records to report the old and
8cc3b1ccd930fe Amir Goldstein 2021-11-29 1675 * new parent+name. Reporting only old and new parent id is less
8cc3b1ccd930fe Amir Goldstein 2021-11-29 1676 * useful and was not implemented.
8cc3b1ccd930fe Amir Goldstein 2021-11-29 1677 */
8cc3b1ccd930fe Amir Goldstein 2021-11-29 1678 if (mask & FAN_RENAME && !(fid_mode & FAN_REPORT_NAME))
8cc3b1ccd930fe Amir Goldstein 2021-11-29 1679 goto fput_and_out;
8cc3b1ccd930fe Amir Goldstein 2021-11-29 1680
0a8dd2db579f7a Heinrich Schuchardt 2014-06-04 1681 if (flags & FAN_MARK_FLUSH) {
0a8dd2db579f7a Heinrich Schuchardt 2014-06-04 1682 ret = 0;
d54f4fba889b20 Amir Goldstein 2018-09-01 1683 if (mark_type == FAN_MARK_MOUNT)
0a8dd2db579f7a Heinrich Schuchardt 2014-06-04 1684 fsnotify_clear_vfsmount_marks_by_group(group);
d54f4fba889b20 Amir Goldstein 2018-09-01 1685 else if (mark_type == FAN_MARK_FILESYSTEM)
d54f4fba889b20 Amir Goldstein 2018-09-01 1686 fsnotify_clear_sb_marks_by_group(group);
0a8dd2db579f7a Heinrich Schuchardt 2014-06-04 1687 else
0a8dd2db579f7a Heinrich Schuchardt 2014-06-04 1688 fsnotify_clear_inode_marks_by_group(group);
0a8dd2db579f7a Heinrich Schuchardt 2014-06-04 1689 goto fput_and_out;
0a8dd2db579f7a Heinrich Schuchardt 2014-06-04 1690 }
0a8dd2db579f7a Heinrich Schuchardt 2014-06-04 1691
ac5656d8a4cdd9 Aaron Goidel 2019-08-12 1692 ret = fanotify_find_path(dfd, pathname, &path, flags,
ac5656d8a4cdd9 Aaron Goidel 2019-08-12 1693 (mask & ALL_FSNOTIFY_EVENTS), obj_type);
2a3edf86040a7e Eric Paris 2009-12-17 1694 if (ret)
2a3edf86040a7e Eric Paris 2009-12-17 1695 goto fput_and_out;
2a3edf86040a7e Eric Paris 2009-12-17 1696
0b3b094ac9a7bb Jan Kara 2019-05-15 1697 if (flags & FAN_MARK_ADD) {
0b3b094ac9a7bb Jan Kara 2019-05-15 1698 ret = fanotify_events_supported(&path, mask);
0b3b094ac9a7bb Jan Kara 2019-05-15 1699 if (ret)
0b3b094ac9a7bb Jan Kara 2019-05-15 1700 goto path_put_and_out;
0b3b094ac9a7bb Jan Kara 2019-05-15 1701 }
0b3b094ac9a7bb Jan Kara 2019-05-15 1702
d809daf1b6add5 Amir Goldstein 2020-07-16 1703 if (fid_mode) {
8299212cbdb01a Gabriel Krisman Bertazi 2021-10-25 1704 ret = fanotify_test_fsid(path.dentry, &__fsid);
8299212cbdb01a Gabriel Krisman Bertazi 2021-10-25 1705 if (ret)
8299212cbdb01a Gabriel Krisman Bertazi 2021-10-25 1706 goto path_put_and_out;
8299212cbdb01a Gabriel Krisman Bertazi 2021-10-25 1707
8299212cbdb01a Gabriel Krisman Bertazi 2021-10-25 1708 ret = fanotify_test_fid(path.dentry);
a8b13aa20afb69 Amir Goldstein 2019-01-10 1709 if (ret)
a8b13aa20afb69 Amir Goldstein 2019-01-10 1710 goto path_put_and_out;
77115225acc67d Amir Goldstein 2019-01-10 1711
73072283a249c7 Amir Goldstein 2019-01-10 1712 fsid = &__fsid;
a8b13aa20afb69 Amir Goldstein 2019-01-10 1713 }
a8b13aa20afb69 Amir Goldstein 2019-01-10 1714
2a3edf86040a7e Eric Paris 2009-12-17 1715 /* inode held in place by reference to path; group by fget on fd */
d54f4fba889b20 Amir Goldstein 2018-09-01 1716 if (mark_type == FAN_MARK_INODE)
2a3edf86040a7e Eric Paris 2009-12-17 1717 inode = path.dentry->d_inode;
0ff21db9fcc390 Eric Paris 2009-12-17 1718 else
0ff21db9fcc390 Eric Paris 2009-12-17 1719 mnt = path.mnt;
2a3edf86040a7e Eric Paris 2009-12-17 1720
85af5d9258cc58 Amir Goldstein 2020-07-16 1721 /* Mask out FAN_EVENT_ON_CHILD flag for sb/mount/non-dir marks */
85af5d9258cc58 Amir Goldstein 2020-07-16 1722 if (mnt || !S_ISDIR(inode->i_mode)) {
85af5d9258cc58 Amir Goldstein 2020-07-16 1723 mask &= ~FAN_EVENT_ON_CHILD;
85af5d9258cc58 Amir Goldstein 2020-07-16 1724 umask = FAN_EVENT_ON_CHILD;
5128063739d293 Amir Goldstein 2020-07-16 1725 /*
5128063739d293 Amir Goldstein 2020-07-16 1726 * If group needs to report parent fid, register for getting
5128063739d293 Amir Goldstein 2020-07-16 1727 * events with parent/name info for non-directory.
5128063739d293 Amir Goldstein 2020-07-16 1728 */
5128063739d293 Amir Goldstein 2020-07-16 1729 if ((fid_mode & FAN_REPORT_DIR_FID) &&
5128063739d293 Amir Goldstein 2020-07-16 1730 (flags & FAN_MARK_ADD) && !ignored)
5128063739d293 Amir Goldstein 2020-07-16 1731 mask |= FAN_EVENT_ON_CHILD;
85af5d9258cc58 Amir Goldstein 2020-07-16 1732 }
85af5d9258cc58 Amir Goldstein 2020-07-16 1733
2a3edf86040a7e Eric Paris 2009-12-17 1734 /* create/update an inode mark */
0a8dd2db579f7a Heinrich Schuchardt 2014-06-04 1735 switch (flags & (FAN_MARK_ADD | FAN_MARK_REMOVE)) {
c6223f464927ca Andreas Gruenbacher 2009-12-17 1736 case FAN_MARK_ADD:
d54f4fba889b20 Amir Goldstein 2018-09-01 1737 if (mark_type == FAN_MARK_MOUNT)
77115225acc67d Amir Goldstein 2019-01-10 1738 ret = fanotify_add_vfsmount_mark(group, mnt, mask,
77115225acc67d Amir Goldstein 2019-01-10 1739 flags, fsid);
d54f4fba889b20 Amir Goldstein 2018-09-01 1740 else if (mark_type == FAN_MARK_FILESYSTEM)
77115225acc67d Amir Goldstein 2019-01-10 1741 ret = fanotify_add_sb_mark(group, mnt->mnt_sb, mask,
77115225acc67d Amir Goldstein 2019-01-10 1742 flags, fsid);
0ff21db9fcc390 Eric Paris 2009-12-17 1743 else
77115225acc67d Amir Goldstein 2019-01-10 1744 ret = fanotify_add_inode_mark(group, inode, mask,
77115225acc67d Amir Goldstein 2019-01-10 1745 flags, fsid);
c6223f464927ca Andreas Gruenbacher 2009-12-17 1746 break;
c6223f464927ca Andreas Gruenbacher 2009-12-17 1747 case FAN_MARK_REMOVE:
d54f4fba889b20 Amir Goldstein 2018-09-01 1748 if (mark_type == FAN_MARK_MOUNT)
77115225acc67d Amir Goldstein 2019-01-10 1749 ret = fanotify_remove_vfsmount_mark(group, mnt, mask,
85af5d9258cc58 Amir Goldstein 2020-07-16 1750 flags, umask);
d54f4fba889b20 Amir Goldstein 2018-09-01 1751 else if (mark_type == FAN_MARK_FILESYSTEM)
77115225acc67d Amir Goldstein 2019-01-10 1752 ret = fanotify_remove_sb_mark(group, mnt->mnt_sb, mask,
85af5d9258cc58 Amir Goldstein 2020-07-16 1753 flags, umask);
f3640192c0a177 Andreas Gruenbacher 2009-12-17 1754 else
77115225acc67d Amir Goldstein 2019-01-10 1755 ret = fanotify_remove_inode_mark(group, inode, mask,
85af5d9258cc58 Amir Goldstein 2020-07-16 1756 flags, umask);
c6223f464927ca Andreas Gruenbacher 2009-12-17 1757 break;
c6223f464927ca Andreas Gruenbacher 2009-12-17 1758 default:
c6223f464927ca Andreas Gruenbacher 2009-12-17 1759 ret = -EINVAL;
c6223f464927ca Andreas Gruenbacher 2009-12-17 1760 }
2a3edf86040a7e Eric Paris 2009-12-17 1761
a8b13aa20afb69 Amir Goldstein 2019-01-10 1762 path_put_and_out:
2a3edf86040a7e Eric Paris 2009-12-17 1763 path_put(&path);
2a3edf86040a7e Eric Paris 2009-12-17 1764 fput_and_out:
2903ff019b346a Al Viro 2012-08-28 1765 fdput(f);
2a3edf86040a7e Eric Paris 2009-12-17 1766 return ret;
2a3edf86040a7e Eric Paris 2009-12-17 1767 }
2a3edf86040a7e Eric Paris 2009-12-17 1768
:::::: The code at line 1568 was first introduced by commit
:::::: 2903ff019b346ab8d36ebbf54853c3aaf6590608 switch simple cases of fget_light to fdget
:::::: TO: Al Viro <viro@...iv.linux.org.uk>
:::::: CC: Al Viro <viro@...iv.linux.org.uk>
--
0-DAY CI Kernel Test Service
https://01.org/lkp
Powered by blists - more mailing lists