Pull vfs stable fodder fixes from Al Viro: - acct_on() fix for deadlock caught by overlayfs folks - autofs RCU use-after-free SNAFU (->d_manage() can be called locklessly, so we need to RCU-delay freeing the objects it looks at) - (hopefully) the end of "do we need freeing this dentry RCU-delayed" whack-a-mole. * 'stable-fodder' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: autofs: fix use-after-free in lockless ->d_manage() dcache: sort the freeing-without-RCU-delay mess for good. acct_on(): don't mess with freeze protection
Showing the changes to include/linux (2 of 9 files). Show all
Unified · Split
| @@ -176,7 +176,6 @@ struct dentry_operations { · 175 unmodified lines | |||
| 176 | * typically using d_splice_alias. */ | 176 | * typically using d_splice_alias. */ |
| 177 | 177 | ||
| 178 | #define DCACHE_REFERENCED 0x00000040 /* Recently used, don't discard. */ | 178 | #define DCACHE_REFERENCED 0x00000040 /* Recently used, don't discard. */ |
| 179 | #define DCACHE_RCUACCESS 0x00000080 /* Entry has ever been RCU-visible */ | ||
| 180 | 179 | ||
| 181 | #define DCACHE_CANT_MOUNT 0x00000100 | 180 | #define DCACHE_CANT_MOUNT 0x00000100 |
| 182 | #define DCACHE_GENOCIDE 0x00000200 | 181 | #define DCACHE_GENOCIDE 0x00000200 |
| @@ -217,6 +216,7 @@ struct dentry_operations { · 34 unmodified lines | |||
| 217 | 216 | ||
| 218 | #define DCACHE_PAR_LOOKUP 0x10000000 /* being looked up (with parent locked shared) */ | 217 | #define DCACHE_PAR_LOOKUP 0x10000000 /* being looked up (with parent locked shared) */ |
| 219 | #define DCACHE_DENTRY_CURSOR 0x20000000 | 218 | #define DCACHE_DENTRY_CURSOR 0x20000000 |
| 219 | #define DCACHE_NORCU 0x40000000 /* No RCU delay for freeing */ | ||
| 220 | 220 | ||
| 221 | extern seqlock_t rename_lock; | 221 | extern seqlock_t rename_lock; |
| 222 | 222 | ||
| @@ -87,6 +87,8 @@ extern bool mnt_may_suid(struct vfsmount *mnt); · 86 unmodified lines | |||
| 87 | 87 | ||
| 88 | struct path; | 88 | struct path; |
| 89 | extern struct vfsmount *clone_private_mount(const struct path *path); | 89 | extern struct vfsmount *clone_private_mount(const struct path *path); |
| 90 | extern int __mnt_want_write(struct vfsmount *); | ||
| 91 | extern void __mnt_drop_write(struct vfsmount *); | ||
| 90 | 92 | ||
| 91 | struct file_system_type; | 93 | struct file_system_type; |
| 92 | extern struct vfsmount *fc_mount(struct fs_context *fc); | 94 | extern struct vfsmount *fc_mount(struct fs_context *fc); |