kernel: add overlayfs stacking fix from upstream
Overlayfs stacking was broken in 4.1.12 but now fixed in upstream branch. Stacking allows experimenting with configurations without the need to reset a device to factory config. Signed-off-by: Roman Yeryomin <roman@advem.lv> Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 47714
This commit is contained in:
		| @@ -0,0 +1,33 @@ | |||||||
|  | From 1c8a47df36d72ace8cf78eb6c228aa0f8027d3c2 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Miklos Szeredi <miklos@szeredi.hu> | ||||||
|  | Date: Mon, 12 Oct 2015 15:56:20 +0200 | ||||||
|  | Subject: ovl: fix open in stacked overlay | ||||||
|  |  | ||||||
|  | If two overlayfs filesystems are stacked on top of each other, then we need | ||||||
|  | recursion in ovl_d_select_inode(). | ||||||
|  |  | ||||||
|  | I guess d_backing_inode() is supposed to do that.  But currently it doesn't | ||||||
|  | and that functionality is open coded in vfs_open().  This is now copied | ||||||
|  | into ovl_d_select_inode() to fix this regression. | ||||||
|  |  | ||||||
|  | Reported-by: Alban Crequy <alban.crequy@gmail.com> | ||||||
|  | Signed-off-by: Miklos Szeredi <miklos@szeredi.hu> | ||||||
|  | Fixes: 4bacc9c9234c ("overlayfs: Make f_path always point to the overlay...") | ||||||
|  | Cc: David Howells <dhowells@redhat.com> | ||||||
|  | Cc: <stable@vger.kernel.org> # v4.2+ | ||||||
|  | --- | ||||||
|  |  fs/overlayfs/inode.c | 3 +++ | ||||||
|  |  1 file changed, 3 insertions(+) | ||||||
|  |  | ||||||
|  | --- a/fs/overlayfs/inode.c | ||||||
|  | +++ b/fs/overlayfs/inode.c | ||||||
|  | @@ -362,6 +362,9 @@ struct inode *ovl_d_select_inode(struct | ||||||
|  |  		ovl_path_upper(dentry, &realpath); | ||||||
|  |  	} | ||||||
|  |   | ||||||
|  | +	if (realpath.dentry->d_flags & DCACHE_OP_SELECT_INODE) | ||||||
|  | +		return realpath.dentry->d_op->d_select_inode(realpath.dentry, file_flags); | ||||||
|  | + | ||||||
|  |  	return d_backing_inode(realpath.dentry); | ||||||
|  |  } | ||||||
|  |   | ||||||
		Reference in New Issue
	
	Block a user
	 Felix Fietkau
					Felix Fietkau