summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/smb/client/smb1session.c27
1 files changed, 12 insertions, 15 deletions
diff --git a/fs/smb/client/smb1session.c b/fs/smb/client/smb1session.c
index c45d3254dfac..5f469b4d70f7 100644
--- a/fs/smb/client/smb1session.c
+++ b/fs/smb/client/smb1session.c
@@ -949,34 +949,31 @@ static int select_sec(struct sess_data *sess_data)
int CIFS_SessSetup(const unsigned int xid, struct cifs_ses *ses,
struct TCP_Server_Info *server)
{
+ struct sess_data sess_data;
int rc = 0;
- struct sess_data *sess_data;
if (ses == NULL) {
WARN(1, "%s: ses == NULL!", __func__);
return -EINVAL;
}
- sess_data = kzalloc_obj(struct sess_data);
- if (!sess_data)
- return -ENOMEM;
+ sess_data = (struct sess_data) {
+ .xid = xid,
+ .ses = ses,
+ .server = server,
+ .buf0_type = CIFS_NO_BUFFER,
+ };
- sess_data->xid = xid;
- sess_data->ses = ses;
- sess_data->server = server;
- sess_data->buf0_type = CIFS_NO_BUFFER;
-
- rc = select_sec(sess_data);
+ rc = select_sec(&sess_data);
if (rc)
goto out;
- while (sess_data->func)
- sess_data->func(sess_data);
+ while (sess_data.func)
+ sess_data.func(&sess_data);
- /* Store result before we free sess_data */
- rc = sess_data->result;
+ rc = sess_data.result;
out:
- kfree_sensitive(sess_data);
+ memzero_explicit(&sess_data, sizeof(sess_data));
return rc;
}