diff --git a/debian/changelog b/debian/changelog index 62e165e78..8cad1cf47 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +linux (4.2.1-3) UNRELEASED; urgency=medium + + * ovl: conditionally use O_LARGEFILE in ovl_copy_up() + + -- Ben Hutchings Sat, 03 Oct 2015 00:14:59 +0100 + linux (4.2.1-2) unstable; urgency=medium * media: uvcvideo: Disable hardware timestamps by default (Closes: #794327) diff --git a/debian/patches/bugfix/all/ovl-conditionally-use-o_largefile-in-ovl_copy_up.patch b/debian/patches/bugfix/all/ovl-conditionally-use-o_largefile-in-ovl_copy_up.patch new file mode 100644 index 000000000..96d3bb799 --- /dev/null +++ b/debian/patches/bugfix/all/ovl-conditionally-use-o_largefile-in-ovl_copy_up.patch @@ -0,0 +1,43 @@ +From: David Howells +Date: Fri, 18 Sep 2015 11:45:12 +0100 +Subject: ovl: conditionally use O_LARGEFILE in ovl_copy_up() +Origin: https://git.kernel.org/cgit/linux/kernel/git/mszeredi/vfs.git/commit?id=bb00c2cd01c27e037900a28dcd01b00317a42fdb + +Open the lower file with O_LARGEFILE in ovl_copy_up() if the lower file +is >= 4GiB in size. + +Reported-by: Ulrich Obergfell +Signed-off-by: David Howells +Signed-off-by: Miklos Szeredi +Cc: # v3.18+ +--- + fs/overlayfs/copy_up.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/fs/overlayfs/copy_up.c b/fs/overlayfs/copy_up.c +index 84d693d..391c359 100644 +--- a/fs/overlayfs/copy_up.c ++++ b/fs/overlayfs/copy_up.c +@@ -76,16 +76,19 @@ static int ovl_copy_up_data(struct path *old, struct path *new, loff_t len) + struct file *new_file; + loff_t old_pos = 0; + loff_t new_pos = 0; +- int error = 0; ++ int error = 0, o_flag = 0; + + if (len == 0) + return 0; + +- old_file = ovl_path_open(old, O_RDONLY); ++ if (i_size_read(d_inode(old->dentry)) > MAX_NON_LFS) ++ o_flag |= O_LARGEFILE; ++ ++ old_file = ovl_path_open(old, o_flag | O_RDONLY); + if (IS_ERR(old_file)) + return PTR_ERR(old_file); + +- new_file = ovl_path_open(new, O_WRONLY); ++ new_file = ovl_path_open(new, o_flag | O_WRONLY); + if (IS_ERR(new_file)) { + error = PTR_ERR(new_file); + goto out_fput; diff --git a/debian/patches/series b/debian/patches/series index f9a58ae23..549116cfb 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -99,3 +99,4 @@ bugfix/all/usb-whiteheat-fix-potential-null-deref-at-probe.patch bugfix/all/media-uvcvideo-disable-hardware-timestamps-by-defaul.patch bugfix/all/sctp-fix-race-on-protocol-netns-initialization.patch bugfix/mips/mips-pgtable-bits.h-correct-_page_global_shift-build.patch +bugfix/all/ovl-conditionally-use-o_largefile-in-ovl_copy_up.patch