On Thu, May 25, 2023 at 12:26 PM Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote: > > On Wed, May 24, 2023 at 04:06:48PM +0200, Jan Kara wrote: > > Yes, I've checked and all ->encode_fh() implementations return > > FILEID_INVALID in case of problems (which are basically always only > > problems with not enough space in the handle buffer). > > ceph_encode_fh() can return -EINVAL Ouch! thanks for pointing this out Jeff, In your own backyard ;-) Do you think this new information calls for rebasing my fix on top of master and marking it for stable? or is this still low risk in your opinion? Thanks, Amir. > > $ smdb.py functions encode_fh > where > $ for i in $(cut -d '|' -f 3 where | sort -u) ; do smdb.py return_states $i ; done | grep INTER | tee out > > regards, > dan carpenter > > fs/btrfs/export.c | btrfs_encode_fh | 36 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/btrfs/export.c | btrfs_encode_fh | 37 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/btrfs/export.c | btrfs_encode_fh | 43 | 77| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/btrfs/export.c | btrfs_encode_fh | 44 | 79| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/btrfs/export.c | btrfs_encode_fh | 45 | 78| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/ceph/export.c | ceph_encode_fh | 69 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/ceph/export.c | ceph_encode_fh | 70 | (-22)| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/ceph/export.c | ceph_encode_fh | 71 | 78| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/ceph/export.c | ceph_encode_fh | 72 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/ceph/export.c | ceph_encode_fh | 73 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/ceph/export.c | ceph_encode_fh | 88 | 2| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/ceph/export.c | ceph_encode_fh | 89 | 1| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/fat/nfs.c | fat_encode_fh_nostale | 84 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/fat/nfs.c | fat_encode_fh_nostale | 85 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/fat/nfs.c | fat_encode_fh_nostale | 88 | 114| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/fat/nfs.c | fat_encode_fh_nostale | 89 | 113| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/fuse/inode.c | fuse_encode_fh | 475 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/fuse/inode.c | fuse_encode_fh | 478 | 130| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/fuse/inode.c | fuse_encode_fh | 479 | 129| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/gfs2/export.c | gfs2_encode_fh | 37 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/gfs2/export.c | gfs2_encode_fh | 38 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/gfs2/export.c | gfs2_encode_fh | 40 | 4| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/gfs2/export.c | gfs2_encode_fh | 42 | 8| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/isofs/export.c | isofs_export_encode_fh | 93 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/isofs/export.c | isofs_export_encode_fh | 94 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/isofs/export.c | isofs_export_encode_fh | 96 | 2| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/isofs/export.c | isofs_export_encode_fh | 97 | 1| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/kernfs/mount.c | kernfs_encode_fh | 59 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/kernfs/mount.c | kernfs_encode_fh | 60 | 254| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/nfs/export.c | nfs_encode_fh | 39 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/nfs/export.c | nfs_encode_fh | 45 | s32min-s32max| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/nilfs2/namei.c | nilfs_encode_fh | 289 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/nilfs2/namei.c | nilfs_encode_fh | 290 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/nilfs2/namei.c | nilfs_encode_fh | 291 | 98| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/nilfs2/namei.c | nilfs_encode_fh | 292 | 97| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/ocfs2/export.c | ocfs2_encode_fh | 213 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/ocfs2/export.c | ocfs2_encode_fh | 214 | 2| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/ocfs2/export.c | ocfs2_encode_fh | 215 | 1| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/orangefs/super.c | orangefs_encode_fh | 100 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/orangefs/super.c | orangefs_encode_fh | 101 | 2| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/orangefs/super.c | orangefs_encode_fh | 102 | 1| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/overlayfs/export.c | ovl_encode_fh | 111 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/overlayfs/export.c | ovl_encode_fh | 112 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/overlayfs/export.c | ovl_encode_fh | 113 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/overlayfs/export.c | ovl_encode_fh | 114 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/overlayfs/export.c | ovl_encode_fh | 115 | 248| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/reiserfs/inode.c | reiserfs_encode_fh | 740 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/reiserfs/inode.c | reiserfs_encode_fh | 741 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/reiserfs/inode.c | reiserfs_encode_fh | 744 | 3| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/reiserfs/inode.c | reiserfs_encode_fh | 745 | 6| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/reiserfs/inode.c | reiserfs_encode_fh | 746 | 5| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > mm/shmem.c | shmem_encode_fh | 2144 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > mm/shmem.c | shmem_encode_fh | 2149 | 1| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/udf/namei.c | udf_encode_fh | 447 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/udf/namei.c | udf_encode_fh | 448 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/udf/namei.c | udf_encode_fh | 450 | 82| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/udf/namei.c | udf_encode_fh | 451 | 81| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/xfs/xfs_export.c | xfs_fs_encode_fh | 48 | 255| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/xfs/xfs_export.c | xfs_fs_encode_fh | 53 | 130| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/xfs/xfs_export.c | xfs_fs_encode_fh | 54 | 129| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/xfs/xfs_export.c | xfs_fs_encode_fh | 55 | 1| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) | > fs/xfs/xfs_export.c | xfs_fs_encode_fh | 56 | 2| INTERNAL | -1 | | int(*)(struct inode*, uint*, int*, struct inode*) |