diff options
Diffstat (limited to 'fs/smb/server/server.c')
| -rw-r--r-- | fs/smb/server/server.c | 7 | 
1 files changed, 6 insertions, 1 deletions
| diff --git a/fs/smb/server/server.c b/fs/smb/server/server.c index ced7a9e916f0..9df121bdf349 100644 --- a/fs/smb/server/server.c +++ b/fs/smb/server/server.c @@ -286,6 +286,7 @@ static void handle_ksmbd_work(struct work_struct *wk)  static int queue_ksmbd_work(struct ksmbd_conn *conn)  {  	struct ksmbd_work *work; +	int err;  	work = ksmbd_alloc_work_struct();  	if (!work) { @@ -297,7 +298,11 @@ static int queue_ksmbd_work(struct ksmbd_conn *conn)  	work->request_buf = conn->request_buf;  	conn->request_buf = NULL; -	ksmbd_init_smb_server(work); +	err = ksmbd_init_smb_server(work); +	if (err) { +		ksmbd_free_work_struct(work); +		return 0; +	}  	ksmbd_conn_enqueue_request(work);  	atomic_inc(&conn->r_count); | 
