@@ -4018,7 +4018,8 @@ init_read_bvec(struct page **pages, unsigned int npages, unsigned int data_size,
40184018static int
40194019handle_read_data (struct TCP_Server_Info * server , struct mid_q_entry * mid ,
40204020 char * buf , unsigned int buf_len , struct page * * pages ,
4021- unsigned int npages , unsigned int page_data_size )
4021+ unsigned int npages , unsigned int page_data_size ,
4022+ bool is_offloaded )
40224023{
40234024 unsigned int data_offset ;
40244025 unsigned int data_len ;
@@ -4040,7 +4041,8 @@ handle_read_data(struct TCP_Server_Info *server, struct mid_q_entry *mid,
40404041
40414042 if (server -> ops -> is_session_expired &&
40424043 server -> ops -> is_session_expired (buf )) {
4043- cifs_reconnect (server );
4044+ if (!is_offloaded )
4045+ cifs_reconnect (server );
40444046 wake_up (& server -> response_q );
40454047 return -1 ;
40464048 }
@@ -4181,7 +4183,8 @@ static void smb2_decrypt_offload(struct work_struct *work)
41814183 mid -> decrypted = true;
41824184 rc = handle_read_data (dw -> server , mid , dw -> buf ,
41834185 dw -> server -> vals -> read_rsp_size ,
4184- dw -> ppages , dw -> npages , dw -> len );
4186+ dw -> ppages , dw -> npages , dw -> len ,
4187+ true);
41854188 mid -> callback (mid );
41864189 cifs_mid_q_entry_release (mid );
41874190 }
@@ -4285,7 +4288,7 @@ receive_encrypted_read(struct TCP_Server_Info *server, struct mid_q_entry **mid,
42854288 (* mid )-> decrypted = true;
42864289 rc = handle_read_data (server , * mid , buf ,
42874290 server -> vals -> read_rsp_size ,
4288- pages , npages , len );
4291+ pages , npages , len , false );
42894292 }
42904293
42914294free_pages :
@@ -4430,7 +4433,7 @@ smb3_handle_read_data(struct TCP_Server_Info *server, struct mid_q_entry *mid)
44304433 char * buf = server -> large_buf ? server -> bigbuf : server -> smallbuf ;
44314434
44324435 return handle_read_data (server , mid , buf , server -> pdu_size ,
4433- NULL , 0 , 0 );
4436+ NULL , 0 , 0 , false );
44344437}
44354438
44364439static int
0 commit comments