Merge 91bc559d8d ("Merge tag 'fs.acl.v6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/idmapping") into android-mainline
Steps on the way to 6.3-rc1 Change-Id: I1a2b09127f753aa02d2f12fbdc0f019315505359 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
@@ -1415,8 +1415,9 @@ int filp_close(struct file *filp, fl_owner_t id)
|
||||
{
|
||||
int retval = 0;
|
||||
|
||||
if (!file_count(filp)) {
|
||||
printk(KERN_ERR "VFS: Close: file count is 0\n");
|
||||
if (CHECK_DATA_CORRUPTION(file_count(filp) == 0,
|
||||
"VFS: Close: file count is 0 (f_op=%ps)",
|
||||
filp->f_op)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -175,7 +175,7 @@ static struct posix_acl *__get_acl(struct mnt_idmap *idmap,
|
||||
* Cache the result, but only if our sentinel is still in place.
|
||||
*/
|
||||
posix_acl_dup(acl);
|
||||
if (unlikely(cmpxchg(p, sentinel, acl) != sentinel))
|
||||
if (unlikely(!try_cmpxchg(p, &sentinel, acl)))
|
||||
posix_acl_release(acl);
|
||||
return acl;
|
||||
}
|
||||
|
||||
+17
-4
@@ -491,10 +491,23 @@ void generic_shutdown_super(struct super_block *sb)
|
||||
if (sop->put_super)
|
||||
sop->put_super(sb);
|
||||
|
||||
if (!list_empty(&sb->s_inodes)) {
|
||||
printk("VFS: Busy inodes after unmount of %s. "
|
||||
"Self-destruct in 5 seconds. Have a nice day...\n",
|
||||
sb->s_id);
|
||||
if (CHECK_DATA_CORRUPTION(!list_empty(&sb->s_inodes),
|
||||
"VFS: Busy inodes after unmount of %s (%s)",
|
||||
sb->s_id, sb->s_type->name)) {
|
||||
/*
|
||||
* Adding a proper bailout path here would be hard, but
|
||||
* we can at least make it more likely that a later
|
||||
* iput_final() or such crashes cleanly.
|
||||
*/
|
||||
struct inode *inode;
|
||||
|
||||
spin_lock(&sb->s_inode_list_lock);
|
||||
list_for_each_entry(inode, &sb->s_inodes, i_sb_list) {
|
||||
inode->i_op = VFS_PTR_POISON;
|
||||
inode->i_sb = VFS_PTR_POISON;
|
||||
inode->i_mapping = VFS_PTR_POISON;
|
||||
}
|
||||
spin_unlock(&sb->s_inode_list_lock);
|
||||
}
|
||||
}
|
||||
spin_lock(&sb_lock);
|
||||
|
||||
@@ -84,4 +84,7 @@
|
||||
/********** kernel/bpf/ **********/
|
||||
#define BPF_PTR_POISON ((void *)(0xeB9FUL + POISON_POINTER_DELTA))
|
||||
|
||||
/********** VFS **********/
|
||||
#define VFS_PTR_POISON ((void *)(0xF5 + POISON_POINTER_DELTA))
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user