FAILED: patch "[PATCH] cifs: Fix uninitialized memory reads for oparms.mode" failed to apply to 5.10-stable tree
[email protected]
maintainerThe patch below does not apply to the 5.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.10.y
git checkout FETCH_HEAD
git cherry-pick -x de036dcaca65cf94bf7ff09c571c077f02bc92b4
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '[email protected]' --subject-prefix 'PATCH 5.10.y' HEAD^..
Possible dependencies:
de036dcaca65 ("cifs: Fix uninitialized memory reads for oparms.mode") a152d05ae4a7 ("cifs: Fix uninitialized memory read for smb311 posix symlink create") ba5d4c1596ca ("cifs: fix file info setting in cifs_open_file()")29cf28235e3e ("cifs: fix file info setting in cifs_query_path_info()") 76894f3e2f71 ("cifs: improve symlink handling for smb2+")a63ec83c462b ("cifs: Add constructor/destructors for tcon->cfid")dcb45fd7f501 ("cifs: Do not use tcon->cfid directly, use the cfid we get from open_cached_dir") 05b98fd2da6b ("cifs: Move cached-dir functions into a separate file") fb157ed226d2 ("cifs: when insecure legacy is disabled shrink amount of SMB1 code") d7d7a66aacd6 ("cifs: avoid use of global locks for high contention data") 9543c8ab3016 ("cifs: list_for_each() -> list_for_each_entry()")4da2cd0517e0 ("cifs: remove redundant initialization to variable mnt_sign_enabled") af3a6d1018f0 ("cifs: update cifs_ses::ip_addr after failover")b54034a73baf ("cifs: during reconnect, update interface if necessary") 387ba9bf4cb8 ("cifs: do not build smb1ops if legacy support is disabled") cc391b694ff0 ("cifs: fix potential deadlock in direct reclaim")44a48081fc03 ("smb3: remove unneeded null check in cifs_readdir")d87c48ce4d89 ("cifs: cache the dirents for entries in a cached directory") 5752bf645f9d ("cifs: avoid parallel session setups on same channel") dd3cd8709ed5 ("cifs: use new enum for ses_status")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From de036dcaca65cf94bf7ff09c571c077f02bc92b4 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <[email protected]>
Date: Wed, 11 Jan 2023 12:37:58 +0100
Subject: [PATCH] cifs: Fix uninitialized memory reads for oparms.mode
Use a struct assignment with implicit member initialization
fs/cifs/cached_dir.c +7 -6
@@ -181,12 +181,13 @@ int open_cached_dir(unsigned int xid, struct cifs_tcon *tcon, rqst[0 ].rq_iov = open_iov; rqst[0 ].rq_nvec =SMB2_CREATE_IOV_SIZE ; - oparms.tcon = tcon; - oparms.create_options =cifs_create_options (cifs_sb,CREATE_NOT_FILE ); - oparms.desired_access =FILE_READ_ATTRIBUTES ; - oparms.disposition =FILE_OPEN ; - oparms.fid = pfid; - oparms.reconnect = false; + oparms = (struct cifs_open_parms ) { + .tcon = tcon, + .create_options =cifs_create_options (cifs_sb,CREATE_NOT_FILE ), + .desired_access =FILE_READ_ATTRIBUTES , + .disposition =FILE_OPEN , + .fid = pfid, + }; rc =SMB2_open_init (tcon, server, &rqst[0 ], &oplock, &oparms, utf16_path);
fs/cifs/cifsacl.c +18 -16
@@ -1428,14 +1428,15 @@ static struct cifs_ntsd *get_cifs_acl_by_path(struct cifs_sb_info *cifs_sb, tcon =tlink_tcon (tlink); xid =get_xid (); - oparms.tcon = tcon; - oparms.cifs_sb = cifs_sb; - oparms.desired_access =READ_CONTROL ; - oparms.create_options =cifs_create_options (cifs_sb,0 ); - oparms.disposition =FILE_OPEN ; - oparms.path = path; - oparms.fid = &fid; - oparms.reconnect = false; + oparms = (struct cifs_open_parms ) { + .tcon = tcon, + .cifs_sb = cifs_sb, + .desired_access =READ_CONTROL , + .create_options =cifs_create_options (cifs_sb,0 ), + .disposition =FILE_OPEN , + .path = path, + .fid = &fid, + }; rc =CIFS_open (xid, &oparms, &oplock,NULL );if (!rc) {
@@ -1494,14 +1495,15 @@ int set_cifs_acl(struct cifs_ntsd *pnntsd, __u32 acllen,else access_flags =WRITE_DAC ; - oparms.tcon = tcon; - oparms.cifs_sb = cifs_sb; - oparms.desired_access = access_flags; - oparms.create_options =cifs_create_options (cifs_sb,0 ); - oparms.disposition =FILE_OPEN ; - oparms.path = path; - oparms.fid = &fid; - oparms.reconnect = false; + oparms = (struct cifs_open_parms ) { + .tcon = tcon, + .cifs_sb = cifs_sb, + .desired_access = access_flags, + .create_options =cifs_create_options (cifs_sb,0 ), + .disposition =FILE_OPEN , + .path = path, + .fid = &fid, + }; rc =CIFS_open (xid, &oparms, &oplock,NULL );if (rc) {
fs/cifs/cifssmb.c +9 -8
@@ -5372,14 +5372,15 @@ CIFSSMBSetPathInfoFB(const unsigned int xid, struct cifs_tcon *tcon,struct cifs_fid fid;int rc; - oparms.tcon = tcon; - oparms.cifs_sb = cifs_sb; - oparms.desired_access =GENERIC_WRITE ; - oparms.create_options =cifs_create_options (cifs_sb,0 ); - oparms.disposition =FILE_OPEN ; - oparms.path = fileName; - oparms.fid = &fid; - oparms.reconnect = false; + oparms = (struct cifs_open_parms ) { + .tcon = tcon, + .cifs_sb = cifs_sb, + .desired_access =GENERIC_WRITE , + .create_options =cifs_create_options (cifs_sb,0 ), + .disposition =FILE_OPEN , + .path = fileName, + .fid = &fid, + }; rc =CIFS_open (xid, &oparms, &oplock,NULL );if (rc)
fs/cifs/dir.c +10 -9
@@ -304,15 +304,16 @@ static int cifs_do_create(struct inode *inode, struct dentry *direntry, unsignedif (!tcon->unix_ext && (mode &S_IWUGO ) ==0 ) create_options |=CREATE_OPTION_READONLY ; - oparms.tcon = tcon; - oparms.cifs_sb = cifs_sb; - oparms.desired_access = desired_access; - oparms.create_options =cifs_create_options (cifs_sb, create_options); - oparms.disposition = disposition; - oparms.path = full_path; - oparms.fid = fid; - oparms.reconnect = false; - oparms.mode = mode; + oparms = (struct cifs_open_parms ) { + .tcon = tcon, + .cifs_sb = cifs_sb, + .desired_access = desired_access, + .create_options =cifs_create_options (cifs_sb, create_options), + .disposition = disposition, + .path = full_path, + .fid = fid, + .mode = mode, + }; rc = server->ops->open (xid, &oparms, oplock, buf);if (rc) {cifs_dbg (FYI ,"cifs_create returned 0x%x\n" , rc);
fs/cifs/file.c +19 -16
@@ -260,14 +260,15 @@ static int cifs_nt_open(const char *full_path, struct inode *inode, struct cifs_if (f_flags &O_DIRECT ) create_options |=CREATE_NO_BUFFER ; - oparms.tcon = tcon; - oparms.cifs_sb = cifs_sb; - oparms.desired_access = desired_access; - oparms.create_options =cifs_create_options (cifs_sb, create_options); - oparms.disposition = disposition; - oparms.path = full_path; - oparms.fid = fid; - oparms.reconnect = false; + oparms = (struct cifs_open_parms ) { + .tcon = tcon, + .cifs_sb = cifs_sb, + .desired_access = desired_access, + .create_options =cifs_create_options (cifs_sb, create_options), + .disposition = disposition, + .path = full_path, + .fid = fid, + }; rc = server->ops->open (xid, &oparms, oplock, buf);if (rc)
@@ -848,14 +849,16 @@ cifs_reopen_file(struct cifsFileInfo *cfile, bool can_flush)if (server->ops->get_lease_key) server->ops->get_lease_key (inode, &cfile->fid); - oparms.tcon = tcon; - oparms.cifs_sb = cifs_sb; - oparms.desired_access = desired_access; - oparms.create_options =cifs_create_options (cifs_sb, create_options); - oparms.disposition = disposition; - oparms.path = full_path; - oparms.fid = &cfile->fid; - oparms.reconnect = true; + oparms = (struct cifs_open_parms ) { + .tcon = tcon, + .cifs_sb = cifs_sb, + .desired_access = desired_access, + .create_options =cifs_create_options (cifs_sb, create_options), + .disposition = disposition, + .path = full_path, + .fid = &cfile->fid, + .reconnect = true, + };/* * Can not refresh inode by passing in file_info buf to be returned by
fs/cifs/inode.c +28 -25
71 lines not on this page · raw message
fs/cifs/link.c +35 -31
90 lines not on this page · raw message
fs/cifs/smb1ops.c +38 -34
96 lines not on this page · raw message
fs/cifs/smb2inode.c +9 -8
@@ -105,14 +105,15 @@ static int smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon, goto finished; } - vars->oparms.tcon = tcon; - vars->oparms.desired_access = desired_access; - vars->oparms.disposition = create_disposition; - vars->oparms.create_options =cifs_create_options (cifs_sb, create_options); - vars->oparms.fid = &fid; - vars->oparms.reconnect = false; - vars->oparms.mode = mode; - vars->oparms.cifs_sb = cifs_sb; + vars->oparms = (struct cifs_open_parms ) { + .tcon = tcon, + .desired_access = desired_access, + .disposition = create_disposition, + .create_options =cifs_create_options (cifs_sb, create_options), + .fid = &fid, + .mode = mode, + .cifs_sb = cifs_sb, + }; rqst[num_rqst].rq_iov = &vars->open_iov[0 ]; rqst[num_rqst].rq_nvec =SMB2_CREATE_IOV_SIZE ;
fs/cifs/smb2ops.c +101 -90
269 lines not on this page · raw message