hc
2024-09-20 a36159eec6ca17402b0e146b86efaf76568dc353
kernel/fs/cifs/smb2inode.c
....@@ -236,15 +236,32 @@
236236 size[0] = 8; /* sizeof __le64 */
237237 data[0] = ptr;
238238
239
- rc = SMB2_set_info_init(tcon, server,
240
- &rqst[num_rqst], COMPOUND_FID,
241
- COMPOUND_FID, current->tgid,
242
- FILE_END_OF_FILE_INFORMATION,
243
- SMB2_O_INFO_FILE, 0, data, size);
239
+ if (cfile) {
240
+ rc = SMB2_set_info_init(tcon, server,
241
+ &rqst[num_rqst],
242
+ cfile->fid.persistent_fid,
243
+ cfile->fid.volatile_fid,
244
+ current->tgid,
245
+ FILE_END_OF_FILE_INFORMATION,
246
+ SMB2_O_INFO_FILE, 0,
247
+ data, size);
248
+ } else {
249
+ rc = SMB2_set_info_init(tcon, server,
250
+ &rqst[num_rqst],
251
+ COMPOUND_FID,
252
+ COMPOUND_FID,
253
+ current->tgid,
254
+ FILE_END_OF_FILE_INFORMATION,
255
+ SMB2_O_INFO_FILE, 0,
256
+ data, size);
257
+ if (!rc) {
258
+ smb2_set_next_command(tcon, &rqst[num_rqst]);
259
+ smb2_set_related(&rqst[num_rqst]);
260
+ }
261
+ }
244262 if (rc)
245263 goto finished;
246
- smb2_set_next_command(tcon, &rqst[num_rqst]);
247
- smb2_set_related(&rqst[num_rqst++]);
264
+ num_rqst++;
248265 trace_smb3_set_eof_enter(xid, ses->Suid, tcon->tid, full_path);
249266 break;
250267 case SMB2_OP_SET_INFO: