Skip to content

Commit 4f40a5b

Browse files
scottmayhewamschuma-ntap
authored andcommitted
NFSv4: Add an fattr allocation to _nfs4_discover_trunking()
This was missed in c3ed222 ("NFSv4: Fix free of uninitialized nfs4_label on referral lookup.") and causes a panic when mounting with '-o trunkdiscovery': PID: 1604 TASK: ffff93dac3520000 CPU: 3 COMMAND: "mount.nfs" #0 [ffffb79140f738f8] machine_kexec at ffffffffaec64bee #1 [ffffb79140f73950] __crash_kexec at ffffffffaeda67fd #2 [ffffb79140f73a18] crash_kexec at ffffffffaeda76ed #3 [ffffb79140f73a30] oops_end at ffffffffaec2658d #4 [ffffb79140f73a50] general_protection at ffffffffaf60111e [exception RIP: nfs_fattr_init+0x5] RIP: ffffffffc0c18265 RSP: ffffb79140f73b08 RFLAGS: 00010246 RAX: 0000000000000000 RBX: ffff93dac304a800 RCX: 0000000000000000 RDX: ffffb79140f73bb0 RSI: ffff93dadc8cbb40 RDI: d03ee11cfaf6bd50 RBP: ffffb79140f73be8 R8: ffffffffc0691560 R9: 0000000000000006 R10: ffff93db3ffd3df8 R11: 0000000000000000 R12: ffff93dac4040000 R13: ffff93dac2848e00 R14: ffffb79140f73b60 R15: ffffb79140f73b30 ORIG_RAX: ffffffffffffffff CS: 0010 SS: 0018 #5 [ffffb79140f73b08] _nfs41_proc_get_locations at ffffffffc0c73d53 [nfsv4] #6 [ffffb79140f73bf0] nfs4_proc_get_locations at ffffffffc0c83e90 [nfsv4] #7 [ffffb79140f73c60] nfs4_discover_trunking at ffffffffc0c83fb7 [nfsv4] #8 [ffffb79140f73cd8] nfs_probe_fsinfo at ffffffffc0c0f95f [nfs] #9 [ffffb79140f73da0] nfs_probe_server at ffffffffc0c1026a [nfs] RIP: 00007f6254fce26e RSP: 00007ffc69496ac8 RFLAGS: 00000246 RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f6254fce26e RDX: 00005600220a82a0 RSI: 00005600220a64d0 RDI: 00005600220a6520 RBP: 00007ffc69496c50 R8: 00005600220a8710 R9: 003035322e323231 R10: 0000000000000000 R11: 0000000000000246 R12: 00007ffc69496c50 R13: 00005600220a8440 R14: 0000000000000010 R15: 0000560020650ef9 ORIG_RAX: 00000000000000a5 CS: 0033 SS: 002b Fixes: c3ed222 ("NFSv4: Fix free of uninitialized nfs4_label on referral lookup.") Signed-off-by: Scott Mayhew <[email protected]> Signed-off-by: Anna Schumaker <[email protected]>
1 parent 080abad commit 4f40a5b

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

fs/nfs/nfs4proc.c

+13-6
Original file line numberDiff line numberDiff line change
@@ -4012,22 +4012,29 @@ static int _nfs4_discover_trunking(struct nfs_server *server,
40124012
}
40134013

40144014
page = alloc_page(GFP_KERNEL);
4015+
if (!page)
4016+
return -ENOMEM;
40154017
locations = kmalloc(sizeof(struct nfs4_fs_locations), GFP_KERNEL);
4016-
if (page == NULL || locations == NULL)
4017-
goto out;
4018+
if (!locations)
4019+
goto out_free;
4020+
locations->fattr = nfs_alloc_fattr();
4021+
if (!locations->fattr)
4022+
goto out_free_2;
40184023

40194024
status = nfs4_proc_get_locations(server, fhandle, locations, page,
40204025
cred);
40214026
if (status)
4022-
goto out;
4027+
goto out_free_3;
40234028

40244029
for (i = 0; i < locations->nlocations; i++)
40254030
test_fs_location_for_trunking(&locations->locations[i], clp,
40264031
server);
4027-
out:
4028-
if (page)
4029-
__free_page(page);
4032+
out_free_3:
4033+
kfree(locations->fattr);
4034+
out_free_2:
40304035
kfree(locations);
4036+
out_free:
4037+
__free_page(page);
40314038
return status;
40324039
}
40334040

0 commit comments

Comments
 (0)