Patch "make sure that freeing shmem fast symlinks is RCU-delayed" has been added to the 4.4-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
make sure that freeing shmem fast symlinks is RCU-delayed
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
make-sure-that-freeing-shmem-fast-symlinks-is-rcu-delayed.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
3ed47db34f480df7caf44436e3e63e555351ae9aMon Sep 17 00:00:00 2001
From: Al Viro <[email protected]>
Date: Fri, 22 Jan 2016 18:08:52 -0500
Subject: make sure that freeing shmem fast symlinks is RCU-delayed
From: Al Viro <[email protected]>
commit 3ed47db34f480df7caf44436e3e63e555351ae9a upstream.
--- include/linux/shmem_fs.h | 5 +---- mm/shmem.c | 9 ++++----- 2 files changed, 5 insertions(+), 9 deletions(-)
include/linux/shmem_fs.h +1 -4
@@ -15,10 +15,7 @@ struct shmem_inode_info {unsigned int seals;/* shmem seals */ unsigned long flags;unsigned long alloced;/* data pages alloced to file */ -union { -unsigned long swapped;/* subtotal assigned to swap */ -char *symlink;/* unswappable short symlink */ - }; +unsigned long swapped;/* subtotal assigned to swap */ struct shared_policy policy;/* NUMA memory alloc policy */ struct list_head swaplist;/* chain of maybes on swap */ struct simple_xattrs xattrs;/* list of xattrs */
mm/shmem.c +4 -5
@@ -620,8 +620,7 @@ static void shmem_evict_inode(struct inolist_del_init (&info->swaplist);mutex_unlock (&shmem_swaplist_mutex); } - }else -kfree (info->symlink); + }simple_xattrs_free (&info->xattrs);WARN_ON (inode->i_blocks);
@@ -2462,13 +2461,12 @@ static int shmem_symlink(struct inode *d info =SHMEM_I (inode); inode->i_size = len-1 ;if (len <=SHORT_SYMLINK_LEN ) { - info->symlink =kmemdup (symname, len,GFP_KERNEL ); -if (!info->symlink) { + inode->i_link =kmemdup (symname, len,GFP_KERNEL ); +if (!inode->i_link) {iput (inode);return -ENOMEM ; } inode->i_op = &shmem_short_symlink_operations; - inode->i_link = info->symlink; }else { error =shmem_getpage (inode,0 , &page,SGP_WRITE ,NULL );if (error) {
@@ -3083,6 +3081,7 @@ static struct inode *shmem_alloc_inode(sstatic void shmem_destroy_callback (struct rcu_head *head) { struct inode *inode = container_of(head, struct inode, i_rcu); +kfree (inode->i_link);kmem_cache_free (shmem_inode_cachep,SHMEM_I (inode)); }
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/make-sure-that-freeing-shmem-fast-symlinks-is-rcu-delayed.patch queue-4.4/bcache-fix-a-leak-in-bch_cached_dev_run.patch queue-4.4/locks-fix-unlock-when-fcntl_setlk-races-with-a-close.patch queue-4.4/namei-d_inode-of-a-pinned-dentry-is-stable-only-for-positives.patch queue-4.4/uml-fix-hostfs-mknod.patch