three smb3 client fixes, all also for stable
-----BEGIN PGP SIGNATURE----- iQGzBAABCgAdFiEE6fsu8pdIjtWE/DpLiiy9cAdyT1EFAmYtKK8ACgkQiiy9cAdy T1EvKAwAtvALEtcuvh3rjMevy4lA12HMAKoAMrHbALKlC3Ile6lL8x6B7Os04S04 qs8aawmSONbL8W8be2gFOfKlaaAVU827HYllHaBi54xYUCj3ZaeDN0LuSHZEa37f UR8SbJr+BVIigQd93Z+Sq/WglvFJig+AY4sIvvThWvlNXDQXRpCTsEi4nIMvQ68+ 1jEAk5TlOS/CnNLGQI13m+Z3wbGYr9tj/fyvNh9C6pyP0nDP6COw9xDwLqYWHOEP yBmEoDVThMbjj4thimrbF7n6K8TNf4dCXdhyo74ggotia5CvHeKtQ82DCNRG1sCZ aMbPL53wM3BM+1Kuvsxx72bk4xOHQINKLM+AXPPgG/amjcs5OnLNEeiUfPWUZ4Rn fMQkDblz2vwGzpRXAziQVyXutlJKqq2jXq4L52H5KCRChfU8KLy7rv27/CaOnDbr Azjpk66RH4hjfaQnVWXFxqqY3h0d2M3ZUqQWcJRLDZvgnBwUhutytTYUf0G++lnP 7oSjF08O =2FY2 -----END PGP SIGNATURE----- Merge tag '6.9-rc5-cifs-fixes-part2' of git://git.samba.org/sfrench/cifs-2.6 Pull smb client fixes from Steve French: "Three smb3 client fixes, all also for stable: - two small locking fixes spotted by Coverity - FILE_ALL_INFO and network_open_info packing fix" * tag '6.9-rc5-cifs-fixes-part2' of git://git.samba.org/sfrench/cifs-2.6: smb3: fix lock ordering potential deadlock in cifs_sync_mid_result smb3: missing lock when picking channel smb: client: Fix struct_group() usage in __packed structs
This commit is contained in:
commit
d43df69f38
|
@ -882,7 +882,7 @@ typedef struct smb_com_open_rsp {
|
||||||
__u8 OplockLevel;
|
__u8 OplockLevel;
|
||||||
__u16 Fid;
|
__u16 Fid;
|
||||||
__le32 CreateAction;
|
__le32 CreateAction;
|
||||||
struct_group(common_attributes,
|
struct_group_attr(common_attributes, __packed,
|
||||||
__le64 CreationTime;
|
__le64 CreationTime;
|
||||||
__le64 LastAccessTime;
|
__le64 LastAccessTime;
|
||||||
__le64 LastWriteTime;
|
__le64 LastWriteTime;
|
||||||
|
@ -2266,7 +2266,7 @@ typedef struct {
|
||||||
/* QueryFileInfo/QueryPathinfo (also for SetPath/SetFile) data buffer formats */
|
/* QueryFileInfo/QueryPathinfo (also for SetPath/SetFile) data buffer formats */
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
typedef struct { /* data block encoding of response to level 263 QPathInfo */
|
typedef struct { /* data block encoding of response to level 263 QPathInfo */
|
||||||
struct_group(common_attributes,
|
struct_group_attr(common_attributes, __packed,
|
||||||
__le64 CreationTime;
|
__le64 CreationTime;
|
||||||
__le64 LastAccessTime;
|
__le64 LastAccessTime;
|
||||||
__le64 LastWriteTime;
|
__le64 LastWriteTime;
|
||||||
|
|
|
@ -320,7 +320,7 @@ struct smb2_file_reparse_point_info {
|
||||||
} __packed;
|
} __packed;
|
||||||
|
|
||||||
struct smb2_file_network_open_info {
|
struct smb2_file_network_open_info {
|
||||||
struct_group(network_open_info,
|
struct_group_attr(network_open_info, __packed,
|
||||||
__le64 CreationTime;
|
__le64 CreationTime;
|
||||||
__le64 LastAccessTime;
|
__le64 LastAccessTime;
|
||||||
__le64 LastWriteTime;
|
__le64 LastWriteTime;
|
||||||
|
|
|
@ -909,12 +909,15 @@ cifs_sync_mid_result(struct mid_q_entry *mid, struct TCP_Server_Info *server)
|
||||||
list_del_init(&mid->qhead);
|
list_del_init(&mid->qhead);
|
||||||
mid->mid_flags |= MID_DELETED;
|
mid->mid_flags |= MID_DELETED;
|
||||||
}
|
}
|
||||||
|
spin_unlock(&server->mid_lock);
|
||||||
cifs_server_dbg(VFS, "%s: invalid mid state mid=%llu state=%d\n",
|
cifs_server_dbg(VFS, "%s: invalid mid state mid=%llu state=%d\n",
|
||||||
__func__, mid->mid, mid->mid_state);
|
__func__, mid->mid, mid->mid_state);
|
||||||
rc = -EIO;
|
rc = -EIO;
|
||||||
|
goto sync_mid_done;
|
||||||
}
|
}
|
||||||
spin_unlock(&server->mid_lock);
|
spin_unlock(&server->mid_lock);
|
||||||
|
|
||||||
|
sync_mid_done:
|
||||||
release_mid(mid);
|
release_mid(mid);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
@ -1057,9 +1060,11 @@ struct TCP_Server_Info *cifs_pick_channel(struct cifs_ses *ses)
|
||||||
index = (uint)atomic_inc_return(&ses->chan_seq);
|
index = (uint)atomic_inc_return(&ses->chan_seq);
|
||||||
index %= ses->chan_count;
|
index %= ses->chan_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
server = ses->chans[index].server;
|
||||||
spin_unlock(&ses->chan_lock);
|
spin_unlock(&ses->chan_lock);
|
||||||
|
|
||||||
return ses->chans[index].server;
|
return server;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
Loading…
Reference in New Issue