projects/linux·commit f3438b4c

Merge tag '5.14-rc3-smb3-fixes' of git://git.samba.org/sfrench/cifs-2.6

f3438b4c · Linus Torvalds <[email protected]> · 2021-07-31 09:25:12 -07:00

Pull cifs fixes from Steve French:
 "Three cifs/smb3 fixes, including two for stable, and a fix for an
  fallocate problem noticed by Clang"

* tag '5.14-rc3-smb3-fixes' of git://git.samba.org/sfrench/cifs-2.6:
  cifs: add missing parsing of backupuid
  smb3: rc uninitialized in one fallocate path
  SMB3: fix readpage for large swap cache
Commit
f3438b4c4e692b49b7dc2bab864d20381024be16
Parents
c7d10223 · b946dbcf

Merge commit. Changes below are compared with the first parent: c7d10223.

Changes

3 files changed · +10 −2

FileStatusAddDelContent
fs/cifs/file.cmodified+1−1View file
fs/cifs/fs_context.cmodified+7−0View file
fs/cifs/smb2ops.cmodified+2−1View file

fs/cifs/file.c

View file
diff --git a/fs/cifs/file.c b/fs/cifs/file.c
index cd10860..0a72840 100644
--- a/fs/cifs/file.c
+++ b/fs/cifs/file.c
@@ -4619,7 +4619,7 @@ read_complete:
static int cifs_readpage(struct file *file, struct page *page)
{
- loff_t offset = (loff_t)page->index << PAGE_SHIFT;
+ loff_t offset = page_file_offset(page);
int rc = -EACCES;
unsigned int xid;

fs/cifs/fs_context.c

View file
diff --git a/fs/cifs/fs_context.c b/fs/cifs/fs_context.c
index 9a59d7f..eed59bc 100644
--- a/fs/cifs/fs_context.c
+++ b/fs/cifs/fs_context.c
@@ -925,6 +925,13 @@ static int smb3_fs_context_parse_param(struct fs_context *fc,
ctx->cred_uid = uid;
ctx->cruid_specified = true;
break;
+ case Opt_backupuid:
+ uid = make_kuid(current_user_ns(), result.uint_32);
+ if (!uid_valid(uid))
+ goto cifs_parse_mount_err;
+ ctx->backupuid = uid;
+ ctx->backupuid_specified = true;
+ break;
case Opt_backupgid:
gid = make_kgid(current_user_ns(), result.uint_32);
if (!gid_valid(gid))

fs/cifs/smb2ops.c

View file
diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c
index 23d6f4d..2dfd0d8 100644
--- a/fs/cifs/smb2ops.c
+++ b/fs/cifs/smb2ops.c
@@ -3617,7 +3617,8 @@ static int smb3_simple_fallocate_write_range(unsigned int xid,
char *buf)
{
struct cifs_io_parms io_parms = {0};
- int rc, nbytes;
+ int nbytes;
+ int rc = 0;
struct kvec iov[2];
io_parms.netfid = cfile->fid.netfid;