lkml.org 
[lkml]   [2022]   [Jan]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
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@intel.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

\
 
 \ /
  Last update: 2022-01-12 00:26    [W:0.227 / U:0.400 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site