CC: [email protected]
In-Reply-To: <[email protected]>
References: <[email protected]>
TO: Amir Goldstein <[email protected]>
TO: Jan Kara <[email protected]>
CC: [email protected]

Hi Amir,

I love your patch! Perhaps something to improve:

[auto build test WARNING on ext3/fsnotify]
[also build test WARNING on nfsd/nfsd-next driver-core/driver-core-testing 
linus/master v5.7 next-20200613]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    
https://github.com/0day-ci/linux/commits/Amir-Goldstein/Prep-work-for-fanotify-named-events/20200612-173701
base:   https://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs.git 
fsnotify
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: i386-randconfig-m021-20200614 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

smatch warnings:
fs/notify/fanotify/fanotify_user.c:1179 do_fanotify_mark() error: we previously 
assumed 'mnt' could be null (see line 1167)

# 
https://github.com/0day-ci/linux/commit/06767da3f04a60d4e363490b79aa7fae78a9837d
git remote add linux-review https://github.com/0day-ci/linux
git remote update linux-review
git checkout 06767da3f04a60d4e363490b79aa7fae78a9837d
vim +/mnt +1179 fs/notify/fanotify/fanotify_user.c

0b3b094ac9a7bb Jan Kara            2019-05-15  1034  
183caa3c8668e9 Dominik Brodowski   2018-03-17  1035  static int 
do_fanotify_mark(int fanotify_fd, unsigned int flags, __u64 mask,
183caa3c8668e9 Dominik Brodowski   2018-03-17  1036                         int 
dfd, const char  __user *pathname)
bbaa4168b2d2d8 Eric Paris          2009-12-17  1037  {
0ff21db9fcc390 Eric Paris          2009-12-17  1038     struct inode *inode = 
NULL;
0ff21db9fcc390 Eric Paris          2009-12-17  1039     struct vfsmount *mnt = 
NULL;
2a3edf86040a7e Eric Paris          2009-12-17  1040     struct fsnotify_group 
*group;
2903ff019b346a Al Viro             2012-08-28  1041     struct fd f;
2a3edf86040a7e Eric Paris          2009-12-17  1042     struct path path;
73072283a249c7 Amir Goldstein      2019-01-10  1043     __kernel_fsid_t __fsid, 
*fsid = NULL;
bdd5a46fe30653 Amir Goldstein      2018-10-04  1044     u32 valid_mask = 
FANOTIFY_EVENTS | FANOTIFY_EVENT_FLAGS;
23c9deeb3285d3 Amir Goldstein      2018-10-04  1045     unsigned int mark_type 
= flags & FANOTIFY_MARK_TYPE_BITS;
665d648612813d Amir Goldstein      2020-06-12  1046     bool ignored = flags & 
FAN_MARK_IGNORED_MASK;
cdb4ff81ebb4f2 Amir Goldstein      2020-06-12  1047     unsigned int obj_type, 
fid_mode;
06767da3f04a60 Amir Goldstein      2020-06-12  1048     u32 umask = 0;
2903ff019b346a Al Viro             2012-08-28  1049     int ret;
2a3edf86040a7e Eric Paris          2009-12-17  1050  
2a3edf86040a7e Eric Paris          2009-12-17  1051     pr_debug("%s: 
fanotify_fd=%d flags=%x dfd=%d pathname=%p mask=%llx\n",
2a3edf86040a7e Eric Paris          2009-12-17  1052              __func__, 
fanotify_fd, flags, dfd, pathname, mask);
2a3edf86040a7e Eric Paris          2009-12-17  1053  
2a3edf86040a7e Eric Paris          2009-12-17  1054     /* we only use the 
lower 32 bits as of right now. */
2a3edf86040a7e Eric Paris          2009-12-17  1055     if (mask & 
((__u64)0xffffffff << 32))
2a3edf86040a7e Eric Paris          2009-12-17  1056             return -EINVAL;
2a3edf86040a7e Eric Paris          2009-12-17  1057  
23c9deeb3285d3 Amir Goldstein      2018-10-04  1058     if (flags & 
~FANOTIFY_MARK_FLAGS)
88380fe66e0ac2 Andreas Gruenbacher 2009-12-17  1059             return -EINVAL;
d54f4fba889b20 Amir Goldstein      2018-09-01  1060  
d54f4fba889b20 Amir Goldstein      2018-09-01  1061     switch (mark_type) {
d54f4fba889b20 Amir Goldstein      2018-09-01  1062     case FAN_MARK_INODE:
ac5656d8a4cdd9 Aaron Goidel        2019-08-12  1063             obj_type = 
FSNOTIFY_OBJ_TYPE_INODE;
ac5656d8a4cdd9 Aaron Goidel        2019-08-12  1064             break;
d54f4fba889b20 Amir Goldstein      2018-09-01  1065     case FAN_MARK_MOUNT:
ac5656d8a4cdd9 Aaron Goidel        2019-08-12  1066             obj_type = 
FSNOTIFY_OBJ_TYPE_VFSMOUNT;
ac5656d8a4cdd9 Aaron Goidel        2019-08-12  1067             break;
d54f4fba889b20 Amir Goldstein      2018-09-01  1068     case 
FAN_MARK_FILESYSTEM:
ac5656d8a4cdd9 Aaron Goidel        2019-08-12  1069             obj_type = 
FSNOTIFY_OBJ_TYPE_SB;
d54f4fba889b20 Amir Goldstein      2018-09-01  1070             break;
d54f4fba889b20 Amir Goldstein      2018-09-01  1071     default:
d54f4fba889b20 Amir Goldstein      2018-09-01  1072             return -EINVAL;
d54f4fba889b20 Amir Goldstein      2018-09-01  1073     }
d54f4fba889b20 Amir Goldstein      2018-09-01  1074  
4d92604cc90aa1 Eric Paris          2009-12-17  1075     switch (flags & 
(FAN_MARK_ADD | FAN_MARK_REMOVE | FAN_MARK_FLUSH)) {
1734dee4e3a296 Lino Sanfilippo     2010-11-22  1076     case FAN_MARK_ADD:      
        /* fallthrough */
88380fe66e0ac2 Andreas Gruenbacher 2009-12-17  1077     case FAN_MARK_REMOVE:
1734dee4e3a296 Lino Sanfilippo     2010-11-22  1078             if (!mask)
1734dee4e3a296 Lino Sanfilippo     2010-11-22  1079                     return 
-EINVAL;
cc299a98eb13a9 Heinrich Schuchardt 2014-06-04  1080             break;
4d92604cc90aa1 Eric Paris          2009-12-17  1081     case FAN_MARK_FLUSH:
23c9deeb3285d3 Amir Goldstein      2018-10-04  1082             if (flags & 
~(FANOTIFY_MARK_TYPE_BITS | FAN_MARK_FLUSH))
cc299a98eb13a9 Heinrich Schuchardt 2014-06-04  1083                     return 
-EINVAL;
88380fe66e0ac2 Andreas Gruenbacher 2009-12-17  1084             break;
88380fe66e0ac2 Andreas Gruenbacher 2009-12-17  1085     default:
88380fe66e0ac2 Andreas Gruenbacher 2009-12-17  1086             return -EINVAL;
88380fe66e0ac2 Andreas Gruenbacher 2009-12-17  1087     }
8fcd65280abc46 Eric Paris          2010-10-28  1088  
6685df31255493 Miklos Szeredi      2017-10-30  1089     if 
(IS_ENABLED(CONFIG_FANOTIFY_ACCESS_PERMISSIONS))
23c9deeb3285d3 Amir Goldstein      2018-10-04  1090             valid_mask |= 
FANOTIFY_PERM_EVENTS;
6685df31255493 Miklos Szeredi      2017-10-30  1091  
6685df31255493 Miklos Szeredi      2017-10-30  1092     if (mask & ~valid_mask)
2a3edf86040a7e Eric Paris          2009-12-17  1093             return -EINVAL;
2a3edf86040a7e Eric Paris          2009-12-17  1094  
665d648612813d Amir Goldstein      2020-06-12  1095     /* Event flags (ONDIR, 
ON_CHILD) are meaningless in ignored mask */
665d648612813d Amir Goldstein      2020-06-12  1096     if (ignored)
665d648612813d Amir Goldstein      2020-06-12  1097             mask &= 
~FANOTIFY_EVENT_FLAGS;
665d648612813d Amir Goldstein      2020-06-12  1098  
2903ff019b346a Al Viro             2012-08-28  1099     f = fdget(fanotify_fd);
2903ff019b346a Al Viro             2012-08-28  1100     if (unlikely(!f.file))
2a3edf86040a7e Eric Paris          2009-12-17  1101             return -EBADF;
2a3edf86040a7e Eric Paris          2009-12-17  1102  
2a3edf86040a7e Eric Paris          2009-12-17  1103     /* verify that this is 
indeed an fanotify instance */
2a3edf86040a7e Eric Paris          2009-12-17  1104     ret = -EINVAL;
2903ff019b346a Al Viro             2012-08-28  1105     if 
(unlikely(f.file->f_op != &fanotify_fops))
2a3edf86040a7e Eric Paris          2009-12-17  1106             goto 
fput_and_out;
2903ff019b346a Al Viro             2012-08-28  1107     group = 
f.file->private_data;
4231a23530a30e Eric Paris          2010-10-28  1108  
4231a23530a30e Eric Paris          2010-10-28  1109     /*
4231a23530a30e Eric Paris          2010-10-28  1110      * group->priority == 
FS_PRIO_0 == FAN_CLASS_NOTIF.  These are not
4231a23530a30e Eric Paris          2010-10-28  1111      * allowed to set 
permissions events.
4231a23530a30e Eric Paris          2010-10-28  1112      */
4231a23530a30e Eric Paris          2010-10-28  1113     ret = -EINVAL;
23c9deeb3285d3 Amir Goldstein      2018-10-04  1114     if (mask & 
FANOTIFY_PERM_EVENTS &&
4231a23530a30e Eric Paris          2010-10-28  1115         group->priority == 
FS_PRIO_0)
4231a23530a30e Eric Paris          2010-10-28  1116             goto 
fput_and_out;
2a3edf86040a7e Eric Paris          2009-12-17  1117  
235328d1fa4251 Amir Goldstein      2019-01-10  1118     /*
235328d1fa4251 Amir Goldstein      2019-01-10  1119      * Events with data 
type inode do not carry enough information to report
235328d1fa4251 Amir Goldstein      2019-01-10  1120      * event->fd, so we do 
not allow setting a mask for inode events unless
235328d1fa4251 Amir Goldstein      2019-01-10  1121      * group supports 
reporting fid.
235328d1fa4251 Amir Goldstein      2019-01-10  1122      * inode events are not 
supported on a mount mark, because they do not
235328d1fa4251 Amir Goldstein      2019-01-10  1123      * carry enough 
information (i.e. path) to be filtered by mount point.
235328d1fa4251 Amir Goldstein      2019-01-10  1124      */
cdb4ff81ebb4f2 Amir Goldstein      2020-06-12  1125     fid_mode = 
FAN_GROUP_FLAG(group, FANOTIFY_FID_BITS);
235328d1fa4251 Amir Goldstein      2019-01-10  1126     if (mask & 
FANOTIFY_INODE_EVENTS &&
cdb4ff81ebb4f2 Amir Goldstein      2020-06-12  1127         (!fid_mode || 
mark_type == FAN_MARK_MOUNT))
235328d1fa4251 Amir Goldstein      2019-01-10  1128             goto 
fput_and_out;
235328d1fa4251 Amir Goldstein      2019-01-10  1129  
0a8dd2db579f7a Heinrich Schuchardt 2014-06-04  1130     if (flags & 
FAN_MARK_FLUSH) {
0a8dd2db579f7a Heinrich Schuchardt 2014-06-04  1131             ret = 0;
d54f4fba889b20 Amir Goldstein      2018-09-01  1132             if (mark_type 
== FAN_MARK_MOUNT)
0a8dd2db579f7a Heinrich Schuchardt 2014-06-04  1133                     
fsnotify_clear_vfsmount_marks_by_group(group);
d54f4fba889b20 Amir Goldstein      2018-09-01  1134             else if 
(mark_type == FAN_MARK_FILESYSTEM)
d54f4fba889b20 Amir Goldstein      2018-09-01  1135                     
fsnotify_clear_sb_marks_by_group(group);
0a8dd2db579f7a Heinrich Schuchardt 2014-06-04  1136             else
0a8dd2db579f7a Heinrich Schuchardt 2014-06-04  1137                     
fsnotify_clear_inode_marks_by_group(group);
0a8dd2db579f7a Heinrich Schuchardt 2014-06-04  1138             goto 
fput_and_out;
0a8dd2db579f7a Heinrich Schuchardt 2014-06-04  1139     }
0a8dd2db579f7a Heinrich Schuchardt 2014-06-04  1140  
ac5656d8a4cdd9 Aaron Goidel        2019-08-12  1141     ret = 
fanotify_find_path(dfd, pathname, &path, flags,
ac5656d8a4cdd9 Aaron Goidel        2019-08-12  1142                     (mask & 
ALL_FSNOTIFY_EVENTS), obj_type);
2a3edf86040a7e Eric Paris          2009-12-17  1143     if (ret)
2a3edf86040a7e Eric Paris          2009-12-17  1144             goto 
fput_and_out;
2a3edf86040a7e Eric Paris          2009-12-17  1145  
0b3b094ac9a7bb Jan Kara            2019-05-15  1146     if (flags & 
FAN_MARK_ADD) {
0b3b094ac9a7bb Jan Kara            2019-05-15  1147             ret = 
fanotify_events_supported(&path, mask);
0b3b094ac9a7bb Jan Kara            2019-05-15  1148             if (ret)
0b3b094ac9a7bb Jan Kara            2019-05-15  1149                     goto 
path_put_and_out;
0b3b094ac9a7bb Jan Kara            2019-05-15  1150     }
0b3b094ac9a7bb Jan Kara            2019-05-15  1151  
cdb4ff81ebb4f2 Amir Goldstein      2020-06-12  1152     if (fid_mode) {
73072283a249c7 Amir Goldstein      2019-01-10  1153             ret = 
fanotify_test_fid(&path, &__fsid);
a8b13aa20afb69 Amir Goldstein      2019-01-10  1154             if (ret)
a8b13aa20afb69 Amir Goldstein      2019-01-10  1155                     goto 
path_put_and_out;
77115225acc67d Amir Goldstein      2019-01-10  1156  
73072283a249c7 Amir Goldstein      2019-01-10  1157             fsid = &__fsid;
a8b13aa20afb69 Amir Goldstein      2019-01-10  1158     }
a8b13aa20afb69 Amir Goldstein      2019-01-10  1159  
2a3edf86040a7e Eric Paris          2009-12-17  1160     /* inode held in place 
by reference to path; group by fget on fd */
d54f4fba889b20 Amir Goldstein      2018-09-01  1161     if (mark_type == 
FAN_MARK_INODE)
2a3edf86040a7e Eric Paris          2009-12-17  1162             inode = 
path.dentry->d_inode;
0ff21db9fcc390 Eric Paris          2009-12-17  1163     else
0ff21db9fcc390 Eric Paris          2009-12-17  1164             mnt = path.mnt;
2a3edf86040a7e Eric Paris          2009-12-17  1165  
06767da3f04a60 Amir Goldstein      2020-06-12  1166     /* Mask out 
FAN_EVENT_ON_CHILD flag for sb/mount/non-dir marks */
06767da3f04a60 Amir Goldstein      2020-06-12 @1167     if (mnt || 
!S_ISDIR(inode->i_mode)) {
06767da3f04a60 Amir Goldstein      2020-06-12  1168             mask &= 
~FAN_EVENT_ON_CHILD;
06767da3f04a60 Amir Goldstein      2020-06-12  1169             umask = 
FAN_EVENT_ON_CHILD;
06767da3f04a60 Amir Goldstein      2020-06-12  1170     }
06767da3f04a60 Amir Goldstein      2020-06-12  1171  
2a3edf86040a7e Eric Paris          2009-12-17  1172     /* create/update an 
inode mark */
0a8dd2db579f7a Heinrich Schuchardt 2014-06-04  1173     switch (flags & 
(FAN_MARK_ADD | FAN_MARK_REMOVE)) {
c6223f464927ca Andreas Gruenbacher 2009-12-17  1174     case FAN_MARK_ADD:
d54f4fba889b20 Amir Goldstein      2018-09-01  1175             if (mark_type 
== FAN_MARK_MOUNT)
77115225acc67d Amir Goldstein      2019-01-10  1176                     ret = 
fanotify_add_vfsmount_mark(group, mnt, mask,
77115225acc67d Amir Goldstein      2019-01-10  1177                             
                         flags, fsid);
d54f4fba889b20 Amir Goldstein      2018-09-01  1178             else if 
(mark_type == FAN_MARK_FILESYSTEM)
77115225acc67d Amir Goldstein      2019-01-10 @1179                     ret = 
fanotify_add_sb_mark(group, mnt->mnt_sb, mask,
77115225acc67d Amir Goldstein      2019-01-10  1180                             
                   flags, fsid);
0ff21db9fcc390 Eric Paris          2009-12-17  1181             else
77115225acc67d Amir Goldstein      2019-01-10  1182                     ret = 
fanotify_add_inode_mark(group, inode, mask,
77115225acc67d Amir Goldstein      2019-01-10  1183                             
                      flags, fsid);
c6223f464927ca Andreas Gruenbacher 2009-12-17  1184             break;
c6223f464927ca Andreas Gruenbacher 2009-12-17  1185     case FAN_MARK_REMOVE:
d54f4fba889b20 Amir Goldstein      2018-09-01  1186             if (mark_type 
== FAN_MARK_MOUNT)
77115225acc67d Amir Goldstein      2019-01-10  1187                     ret = 
fanotify_remove_vfsmount_mark(group, mnt, mask,
06767da3f04a60 Amir Goldstein      2020-06-12  1188                             
                            flags, umask);
d54f4fba889b20 Amir Goldstein      2018-09-01  1189             else if 
(mark_type == FAN_MARK_FILESYSTEM)
77115225acc67d Amir Goldstein      2019-01-10  1190                     ret = 
fanotify_remove_sb_mark(group, mnt->mnt_sb, mask,
06767da3f04a60 Amir Goldstein      2020-06-12  1191                             
                      flags, umask);
f3640192c0a177 Andreas Gruenbacher 2009-12-17  1192             else
77115225acc67d Amir Goldstein      2019-01-10  1193                     ret = 
fanotify_remove_inode_mark(group, inode, mask,
06767da3f04a60 Amir Goldstein      2020-06-12  1194                             
                         flags, umask);
c6223f464927ca Andreas Gruenbacher 2009-12-17  1195             break;
c6223f464927ca Andreas Gruenbacher 2009-12-17  1196     default:
c6223f464927ca Andreas Gruenbacher 2009-12-17  1197             ret = -EINVAL;
c6223f464927ca Andreas Gruenbacher 2009-12-17  1198     }
2a3edf86040a7e Eric Paris          2009-12-17  1199  
a8b13aa20afb69 Amir Goldstein      2019-01-10  1200  path_put_and_out:
2a3edf86040a7e Eric Paris          2009-12-17  1201     path_put(&path);
2a3edf86040a7e Eric Paris          2009-12-17  1202  fput_and_out:
2903ff019b346a Al Viro             2012-08-28  1203     fdput(f);
2a3edf86040a7e Eric Paris          2009-12-17  1204     return ret;
2a3edf86040a7e Eric Paris          2009-12-17  1205  }
2a3edf86040a7e Eric Paris          2009-12-17  1206  

:::::: The code at line 1179 was first introduced by commit
:::::: 77115225acc67d9ac4b15f04dd138006b9cd1ef2 fanotify: cache fsid in 
fsnotify_mark_connector

:::::: TO: Amir Goldstein <[email protected]>
:::::: CC: Jan Kara <[email protected]>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to