Message ID | 20230930050033.41174-1-wedsonaf@gmail.com (mailing list archive) |
---|---|
Headers | show |
Series | const xattr tables | expand |
On Sat, Sep 30, 2023 at 02:00:04AM -0300, Wedson Almeida Filho wrote: > From: Wedson Almeida Filho <walmeida@microsoft.com> > > The 's_xattr' field of 'struct super_block' currently requires a mutable > table of 'struct xattr_handler' entries (although each handler itself is > const). However, no code in vfs actually modifies the tables. > > So this series changes the type of 's_xattr' to allow const tables, and > modifies existing file system to move their tables to .rodata. This is > desirable because these tables contain entries with function pointers in > them; moving them to .rodata makes it considerably less likely to be > modified accidentally or maliciously at runtime. Fine by me and good idea. On vacation this week but I'll wait for individual fs maintainers to ack their portions anyway and then pick up next week.
On Sat, Sep 30, 2023 at 02:00:04AM -0300, Wedson Almeida Filho wrote: > From: Wedson Almeida Filho <walmeida@microsoft.com> > > The 's_xattr' field of 'struct super_block' currently requires a mutable > table of 'struct xattr_handler' entries (although each handler itself is > const). However, no code in vfs actually modifies the tables. > > So this series changes the type of 's_xattr' to allow const tables, and > modifies existing file system to move their tables to .rodata. This is > desirable because these tables contain entries with function pointers in > them; moving them to .rodata makes it considerably less likely to be > modified accidentally or maliciously at runtime. > > I found this while writing Rust abstractions for vfs. Applied to the vfs.xattr branch of the vfs/vfs.git tree. Patches in the vfs.xattr branch should appear in linux-next soon. Please report any outstanding bugs that were missed during review in a new review to the original patch series allowing us to drop it. It's encouraged to provide Acked-bys and Reviewed-bys even though the patch has now been applied. If possible patch trailers will be updated. Note that commit hashes shown below are subject to change due to rebase, trailer updates or similar. If in doubt, please check the listed branch. tree: https://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs.git branch: vfs.xattr [01/29] xattr: make the xattr array itself const https://git.kernel.org/vfs/vfs/c/e346fb6d774a [02/29] ext4: move ext4_xattr_handlers to .rodata https://git.kernel.org/vfs/vfs/c/e60ac1283340 [03/29] 9p: move xattr-related structs to .rodata https://git.kernel.org/vfs/vfs/c/b6079dc9cb51 [04/29] afs: move afs_xattr_handlers to .rodata https://git.kernel.org/vfs/vfs/c/f710c2e48135 [05/29] btrfs: move btrfs_xattr_handlers to .rodata https://git.kernel.org/vfs/vfs/c/8a25b4189896 [06/29] ceph: move ceph_xattr_handlers to .rodata https://git.kernel.org/vfs/vfs/c/10f9fbe9f25a [07/29] ecryptfs: move ecryptfs_xattr_handlers to .rodata https://git.kernel.org/vfs/vfs/c/f354ed981066 [08/29] erofs: move erofs_xattr_handlers and xattr_handler_map to .rodata https://git.kernel.org/vfs/vfs/c/3591f40e223c [09/29] ext2: move ext2_xattr_handlers and ext2_xattr_handler_map to .rodata https://git.kernel.org/vfs/vfs/c/ce78a1ec1c3b [10/29] f2fs: move f2fs_xattr_handlers and f2fs_xattr_handler_map to .rodata https://git.kernel.org/vfs/vfs/c/a1c0752c33d2 [11/29] fuse: move fuse_xattr_handlers to .rodata https://git.kernel.org/vfs/vfs/c/34271edb1878 [12/29] gfs2: move gfs2_xattr_handlers_max to .rodata https://git.kernel.org/vfs/vfs/c/89491fafa81c [13/29] hfs: move hfs_xattr_handlers to .rodata https://git.kernel.org/vfs/vfs/c/e27a45b65070 [14/29] hfsplus: move hfsplus_xattr_handlers to .rodata https://git.kernel.org/vfs/vfs/c/2c323f2c5650 [15/29] jffs2: move jffs2_xattr_handlers to .rodata https://git.kernel.org/vfs/vfs/c/13a75c3abcbe [16/29] jfs: move jfs_xattr_handlers to .rodata https://git.kernel.org/vfs/vfs/c/ea780283e2c0 [17/29] kernfs: move kernfs_xattr_handlers to .rodata https://git.kernel.org/vfs/vfs/c/ffb2e0650827 [18/29] nfs: move nfs4_xattr_handlers to .rodata https://git.kernel.org/vfs/vfs/c/f496647e3b09 [19/29] ntfs3: move ntfs_xattr_handlers to .rodata https://git.kernel.org/vfs/vfs/c/5bf1dd9441da [20/29] ocfs2: move ocfs2_xattr_handlers and ocfs2_xattr_handler_map to .rodata https://git.kernel.org/vfs/vfs/c/2cba9af99b3f [21/29] orangefs: move orangefs_xattr_handlers to .rodata https://git.kernel.org/vfs/vfs/c/2e9440ac0716 [22/29] reiserfs: move reiserfs_xattr_handlers to .rodata https://git.kernel.org/vfs/vfs/c/c063254b7de8 [23/29] smb: move cifs_xattr_handlers to .rodata https://git.kernel.org/vfs/vfs/c/e45679b0d2e4 [24/29] squashfs: move squashfs_xattr_handlers to .rodata https://git.kernel.org/vfs/vfs/c/8a2ae79c7db0 [25/29] ubifs: move ubifs_xattr_handlers to .rodata https://git.kernel.org/vfs/vfs/c/582f1ebe32a9 [26/29] xfs: move xfs_xattr_handlers to .rodata https://git.kernel.org/vfs/vfs/c/6fca42a3b168 [27/29] overlayfs: move xattr tables to .rodata https://git.kernel.org/vfs/vfs/c/3f644c1cd7b5 [28/29] shmem: move shmem_xattr_handlers to .rodata https://git.kernel.org/vfs/vfs/c/2f8e5f98045e [29/29] net: move sockfs_xattr_handlers to .rodata https://git.kernel.org/vfs/vfs/c/dcff22588d9a
From: Wedson Almeida Filho <walmeida@microsoft.com> The 's_xattr' field of 'struct super_block' currently requires a mutable table of 'struct xattr_handler' entries (although each handler itself is const). However, no code in vfs actually modifies the tables. So this series changes the type of 's_xattr' to allow const tables, and modifies existing file system to move their tables to .rodata. This is desirable because these tables contain entries with function pointers in them; moving them to .rodata makes it considerably less likely to be modified accidentally or maliciously at runtime. I found this while writing Rust abstractions for vfs. Wedson Almeida Filho (29): xattr: make the xattr array itself const ext4: move ext4_xattr_handlers to .rodata 9p: move xattr-related structs to .rodata afs: move afs_xattr_handlers to .rodata btrfs: move btrfs_xattr_handlers to .rodata ceph: move ceph_xattr_handlers to .rodata ecryptfs: move ecryptfs_xattr_handlers to .rodata erofs: move erofs_xattr_handlers and xattr_handler_map to .rodata ext2: move ext2_xattr_handlers and ext2_xattr_handler_map to .rodata f2fs: move f2fs_xattr_handlers and f2fs_xattr_handler_map to .rodata fuse: move fuse_xattr_handlers to .rodata gfs2: move gfs2_xattr_handlers_max to .rodata hfs: move hfs_xattr_handlers to .rodata hfsplus: move hfsplus_xattr_handlers to .rodata jffs2: move jffs2_xattr_handlers to .rodata jfs: move jfs_xattr_handlers to .rodata kernfs: move kernfs_xattr_handlers to .rodata nfs: move nfs4_xattr_handlers to .rodata ntfs3: move ntfs_xattr_handlers to .rodata ocfs2: move ocfs2_xattr_handlers and ocfs2_xattr_handler_map to .rodata orangefs: move orangefs_xattr_handlers to .rodata reiserfs: move reiserfs_xattr_handlers to .rodata smb: move cifs_xattr_handlers to .rodata squashfs: move squashfs_xattr_handlers to .rodata ubifs: move ubifs_xattr_handlers to .rodata xfs: move xfs_xattr_handlers to .rodata overlayfs: move xattr tables to .rodata shmem: move shmem_xattr_handlers to .rodata net: move sockfs_xattr_handlers to .rodata fs/9p/xattr.c | 8 ++++---- fs/9p/xattr.h | 2 +- fs/afs/internal.h | 2 +- fs/afs/xattr.c | 2 +- fs/btrfs/xattr.c | 2 +- fs/btrfs/xattr.h | 2 +- fs/ceph/super.h | 2 +- fs/ceph/xattr.c | 2 +- fs/ecryptfs/ecryptfs_kernel.h | 2 +- fs/ecryptfs/inode.c | 2 +- fs/erofs/xattr.c | 2 +- fs/erofs/xattr.h | 4 ++-- fs/ext2/xattr.c | 4 ++-- fs/ext2/xattr.h | 2 +- fs/ext4/xattr.c | 2 +- fs/ext4/xattr.h | 2 +- fs/f2fs/xattr.c | 4 ++-- fs/f2fs/xattr.h | 2 +- fs/fuse/fuse_i.h | 2 +- fs/fuse/xattr.c | 2 +- fs/gfs2/super.h | 4 ++-- fs/gfs2/xattr.c | 4 ++-- fs/hfs/attr.c | 2 +- fs/hfs/hfs_fs.h | 2 +- fs/hfsplus/xattr.c | 2 +- fs/hfsplus/xattr.h | 2 +- fs/jffs2/xattr.c | 2 +- fs/jffs2/xattr.h | 2 +- fs/jfs/jfs_xattr.h | 2 +- fs/jfs/xattr.c | 2 +- fs/kernfs/inode.c | 2 +- fs/kernfs/kernfs-internal.h | 2 +- fs/nfs/nfs.h | 2 +- fs/nfs/nfs4_fs.h | 2 +- fs/nfs/nfs4proc.c | 2 +- fs/ntfs3/ntfs_fs.h | 2 +- fs/ntfs3/xattr.c | 2 +- fs/ocfs2/xattr.c | 4 ++-- fs/ocfs2/xattr.h | 2 +- fs/orangefs/orangefs-kernel.h | 2 +- fs/orangefs/xattr.c | 2 +- fs/overlayfs/super.c | 4 ++-- fs/reiserfs/reiserfs.h | 2 +- fs/reiserfs/xattr.c | 2 +- fs/smb/client/cifsfs.h | 2 +- fs/smb/client/xattr.c | 2 +- fs/squashfs/squashfs.h | 2 +- fs/squashfs/xattr.c | 2 +- fs/ubifs/ubifs.h | 2 +- fs/ubifs/xattr.c | 2 +- fs/xattr.c | 6 +++--- fs/xfs/xfs_xattr.c | 2 +- fs/xfs/xfs_xattr.h | 2 +- include/linux/fs.h | 2 +- include/linux/pseudo_fs.h | 2 +- mm/shmem.c | 2 +- net/socket.c | 2 +- 57 files changed, 69 insertions(+), 69 deletions(-) base-commit: 2dde18cd1d8fac735875f2e4987f11817cc0bc2c