[<prev] [next>] [day] [month] [year] [list]
Message-ID: <202201120452.MMoH70oo-lkp@intel.com>
Date: Wed, 12 Jan 2022 07:24:46 +0800
From: kernel test robot <lkp@...el.com>
To: Paul Lawrence <paullawrence@...gle.com>
Cc: llvm@...ts.linux.dev, kbuild-all@...ts.01.org,
GNU/Weeb Mailing List <gwml@...weeb.org>,
linux-kernel@...r.kernel.org
Subject: [ammarfaizi2-block:google/android/kernel/common/android13-5.10
9999/9999] fs/fuse/dir.c:1579:44: error: no member named 'backing_inode' in
'struct fuse_inode'
tree: https://github.com/ammarfaizi2/linux-block google/android/kernel/common/android13-5.10
head: 34957d1e9236e27df4fc1e4cfbbaf271271f05ff
commit: 34957d1e9236e27df4fc1e4cfbbaf271271f05ff [9999/9999] ANDROID: fuse-bpf: Fix perms on readdir
config: arm-randconfig-c002-20220111 (https://download.01.org/0day-ci/archive/20220112/202201120452.MMoH70oo-lkp@intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 244dd2913a43a200f5a6544d424cdc37b771028b)
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
# install arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
# https://github.com/ammarfaizi2/linux-block/commit/34957d1e9236e27df4fc1e4cfbbaf271271f05ff
git remote add ammarfaizi2-block https://github.com/ammarfaizi2/linux-block
git fetch --no-tags ammarfaizi2-block google/android/kernel/common/android13-5.10
git checkout 34957d1e9236e27df4fc1e4cfbbaf271271f05ff
# save the config file to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=arm
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>
All errors (new ones prefixed by >>):
In file included from fs/fuse/dir.c:9:
In file included from fs/fuse/fuse_i.h:16:
In file included from include/linux/filter.h:21:
In file included from include/linux/if_vlan.h:10:
In file included from include/linux/netdevice.h:42:
In file included from include/net/netprio_cgroup.h:11:
In file included from include/linux/cgroup.h:29:
include/linux/cgroup-defs.h:505:16: warning: field 'cgrp' with variable sized type 'struct cgroup' not at the end of a struct or class is a GNU extension [-Wgnu-variable-sized-type-not-at-end]
struct cgroup cgrp;
^
>> fs/fuse/dir.c:1579:44: error: no member named 'backing_inode' in 'struct fuse_inode'
} else if (!(mask & MAY_NOT_BLOCK) && fi->backing_inode) {
~~ ^
1 warning and 1 error generated.
vim +1579 fs/fuse/dir.c
1508
1509 /*
1510 * Check permission. The two basic access models of FUSE are:
1511 *
1512 * 1) Local access checking ('default_permissions' mount option) based
1513 * on file mode. This is the plain old disk filesystem permission
1514 * modell.
1515 *
1516 * 2) "Remote" access checking, where server is responsible for
1517 * checking permission in each inode operation. An exception to this
1518 * is if ->permission() was invoked from sys_access() in which case an
1519 * access request is sent. Execute permission is still checked
1520 * locally based on file mode.
1521 */
1522 static int fuse_permission(struct inode *inode, int mask)
1523 {
1524 struct fuse_conn *fc = get_fuse_conn(inode);
1525 bool refreshed = false;
1526 int err = 0;
1527 struct fuse_inode *fi = get_fuse_inode(inode);
1528
1529 if (fuse_is_bad(inode))
1530 return -EIO;
1531
1532 if (!fuse_allow_current_process(fc))
1533 return -EACCES;
1534
1535 /*
1536 * If attributes are needed, refresh them before proceeding
1537 */
1538 if (fc->default_permissions ||
1539 ((mask & MAY_EXEC) && S_ISREG(inode->i_mode))) {
1540 u32 perm_mask = STATX_MODE | STATX_UID | STATX_GID;
1541
1542 if (perm_mask & READ_ONCE(fi->inval_mask) ||
1543 time_before64(fi->i_time, get_jiffies_64())) {
1544 refreshed = true;
1545
1546 err = fuse_perm_getattr(inode, mask);
1547 if (err)
1548 return err;
1549 }
1550 }
1551
1552 if (fc->default_permissions) {
1553 err = generic_permission(inode, mask);
1554
1555 /* If permission is denied, try to refresh file
1556 attributes. This is also needed, because the root
1557 node will at first have no permissions */
1558 if (err == -EACCES && !refreshed) {
1559 err = fuse_perm_getattr(inode, mask);
1560 if (!err)
1561 err = generic_permission(inode, mask);
1562 }
1563
1564 /* Note: the opposite of the above test does not
1565 exist. So if permissions are revoked this won't be
1566 noticed immediately, only after the attribute
1567 timeout has expired */
1568 } else if (mask & (MAY_ACCESS | MAY_CHDIR)) {
1569 err = fuse_access(inode, mask);
1570 } else if ((mask & MAY_EXEC) && S_ISREG(inode->i_mode)) {
1571 if (!(inode->i_mode & S_IXUGO)) {
1572 if (refreshed)
1573 return -EACCES;
1574
1575 err = fuse_perm_getattr(inode, mask);
1576 if (!err && !(inode->i_mode & S_IXUGO))
1577 return -EACCES;
1578 }
> 1579 } else if (!(mask & MAY_NOT_BLOCK) && fi->backing_inode) {
1580 err = fuse_access(inode, mask);
1581 }
1582 return err;
1583 }
1584
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Powered by blists - more mailing lists