In the Linux kernel, the following vulnerability has been resolved:
nfs: fix UAF in direct writes
In production we have been hitting the following warning consistently
------------[ cut here ]------------ refcountt: underflow; use-after-free. WARNING: CPU: 17 PID: 1800359 at lib/refcount.c:28 refcountwarnsaturate+0x9c/0xe0 Workqueue: nfsiod nfsdirectwriteschedulework [nfs] RIP: 0010:refcountwarnsaturate+0x9c/0xe0 PKRU: 55555554 Call Trace: <TASK> ? _warn+0x9f/0x130 ? refcountwarnsaturate+0x9c/0xe0 ? reportbug+0xcc/0x150 ? handlebug+0x3d/0x70 ? excinvalidop+0x16/0x40 ? asmexcinvalidop+0x16/0x20 ? refcountwarnsaturate+0x9c/0xe0 nfsdirectwriteschedulework+0x237/0x250 [nfs] processonework+0x12f/0x4a0 workerthread+0x14e/0x3b0 ? ZSTDgetCParamsinternal+0x220/0x220 kthread+0xdc/0x120 ? _btfnamevalid+0xa0/0xa0 retfrom_fork+0x1f/0x30
This is because we're completing the nfsdirectrequest twice in a row.
The source of this is when we have our commit requests to submit, we process them and send them off, and then in the completion path for the commit requests we have
if (nfscommitend(cinfo.mds)) nfsdirectwrite_complete(dreq);
However since we're submitting asynchronous requests we sometimes have one that completes before we submit the next one, so we end up calling complete on the nfsdirectrequest twice.
The only other place we use nfsgenericcommitlist() is in _nfscommitinode, which wraps this call in a
nfscommitbegin(); nfscommitend();
Which is a common pattern for this style of completion handling, one that is also repeated in the direct code with getdreq()/putdreq() calls around where we process events as well as in the completion paths.
Fix this by using the same pattern for the commit requests.
Before with my 200 node rocksdb stress running this warning would pop every 10ish minutes. With my patch the stress test has been running for several hours without popping.
[
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"128679284166626136160540364316510765798",
"63950288892968772178111632548448434926",
"284164680976698337403232824989320812716",
"140259164343781647330234506749378916706"
]
},
"id": "CVE-2024-26958-0e27a4a9",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4595d90b5d2ea5fa4d318d13f59055aa4bf3e7f5",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "fs/nfs/write.c"
},
"signature_type": "Line"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"139981602022285979432442873348271482281",
"324194316824651369254183627135978017319",
"50031624398328311402595051117737097323",
"185140313086485361251431408913889686975"
]
},
"id": "CVE-2024-26958-198f277a",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@1daf52b5ffb24870fbeda20b4967526d8f9e12ab",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "include/linux/nfs_fs.h"
},
"signature_type": "Line"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"128679284166626136160540364316510765798",
"63950288892968772178111632548448434926",
"284164680976698337403232824989320812716",
"140259164343781647330234506749378916706"
]
},
"id": "CVE-2024-26958-2bdef173",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6cd3f13aaa62970b5169d990e936b2e96943bc6a",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "fs/nfs/write.c"
},
"signature_type": "Line"
},
{
"digest": {
"function_hash": "305142990905777991319828880214886131278",
"length": 78.0
},
"id": "CVE-2024-26958-39575297",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@1daf52b5ffb24870fbeda20b4967526d8f9e12ab",
"signature_version": "v1",
"deprecated": false,
"target": {
"function": "nfs_commit_begin",
"file": "fs/nfs/write.c"
},
"signature_type": "Function"
},
{
"digest": {
"function_hash": "113174769764619044624973187606831768981",
"length": 268.0
},
"id": "CVE-2024-26958-39b6e875",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cf54f66e1dd78990ec6b32177bca7e6ea2144a95",
"signature_version": "v1",
"deprecated": false,
"target": {
"function": "nfs_direct_commit_schedule",
"file": "fs/nfs/direct.c"
},
"signature_type": "Function"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"245838355196996765046746221457348339410",
"138048540744500117770025047660581644339",
"93567744276325275857646424109446434866",
"314110375120196250428105647953017584803",
"253472359728382556874384693417775169217",
"113032924055457360462400749482328469151",
"6207186655233075980200704958990888799",
"203059874322775985737220597237801017911"
]
},
"id": "CVE-2024-26958-3c6ccb15",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@80d24b308b7ee7037fc90d8ac99f6f78df0a256f",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "fs/nfs/direct.c"
},
"signature_type": "Line"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"139981602022285979432442873348271482281",
"324194316824651369254183627135978017319",
"50031624398328311402595051117737097323",
"185140313086485361251431408913889686975"
]
},
"id": "CVE-2024-26958-41503de0",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@17f46b803d4f23c66cacce81db35fef3adb8f2af",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "include/linux/nfs_fs.h"
},
"signature_type": "Line"
},
{
"digest": {
"function_hash": "305142990905777991319828880214886131278",
"length": 78.0
},
"id": "CVE-2024-26958-432e2e57",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e25447c35f8745337ea8bc0c9697fcac14df8605",
"signature_version": "v1",
"deprecated": false,
"target": {
"function": "nfs_commit_begin",
"file": "fs/nfs/write.c"
},
"signature_type": "Function"
},
{
"digest": {
"function_hash": "113174769764619044624973187606831768981",
"length": 268.0
},
"id": "CVE-2024-26958-4d6c0c20",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@17f46b803d4f23c66cacce81db35fef3adb8f2af",
"signature_version": "v1",
"deprecated": false,
"target": {
"function": "nfs_direct_commit_schedule",
"file": "fs/nfs/direct.c"
},
"signature_type": "Function"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"245838355196996765046746221457348339410",
"138048540744500117770025047660581644339",
"93567744276325275857646424109446434866",
"314110375120196250428105647953017584803",
"253472359728382556874384693417775169217",
"113032924055457360462400749482328469151",
"6207186655233075980200704958990888799",
"203059874322775985737220597237801017911"
]
},
"id": "CVE-2024-26958-5a97bdaf",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cf54f66e1dd78990ec6b32177bca7e6ea2144a95",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "fs/nfs/direct.c"
},
"signature_type": "Line"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"245838355196996765046746221457348339410",
"138048540744500117770025047660581644339",
"93567744276325275857646424109446434866",
"314110375120196250428105647953017584803",
"253472359728382556874384693417775169217",
"113032924055457360462400749482328469151",
"6207186655233075980200704958990888799",
"203059874322775985737220597237801017911"
]
},
"id": "CVE-2024-26958-5f38ac0c",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@1daf52b5ffb24870fbeda20b4967526d8f9e12ab",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "fs/nfs/direct.c"
},
"signature_type": "Line"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"245838355196996765046746221457348339410",
"138048540744500117770025047660581644339",
"93567744276325275857646424109446434866",
"314110375120196250428105647953017584803",
"253472359728382556874384693417775169217",
"113032924055457360462400749482328469151",
"173585876106724747229107913850303930352",
"160836836869486999824481657500277408251"
]
},
"id": "CVE-2024-26958-62c8ef3f",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6cd3f13aaa62970b5169d990e936b2e96943bc6a",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "fs/nfs/direct.c"
},
"signature_type": "Line"
},
{
"digest": {
"function_hash": "305142990905777991319828880214886131278",
"length": 78.0
},
"id": "CVE-2024-26958-67ed8fe9",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4595d90b5d2ea5fa4d318d13f59055aa4bf3e7f5",
"signature_version": "v1",
"deprecated": false,
"target": {
"function": "nfs_commit_begin",
"file": "fs/nfs/write.c"
},
"signature_type": "Function"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"30963845036465161035065880357239205211",
"324194316824651369254183627135978017319",
"222994051007050847711747062189615333244",
"114246307379218621261022048620536246116"
]
},
"id": "CVE-2024-26958-6f4d119d",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@80d24b308b7ee7037fc90d8ac99f6f78df0a256f",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "include/linux/nfs_fs.h"
},
"signature_type": "Line"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"245838355196996765046746221457348339410",
"138048540744500117770025047660581644339",
"93567744276325275857646424109446434866",
"314110375120196250428105647953017584803",
"253472359728382556874384693417775169217",
"113032924055457360462400749482328469151",
"6207186655233075980200704958990888799",
"203059874322775985737220597237801017911"
]
},
"id": "CVE-2024-26958-77fd9702",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3abc2d160ed8213948b147295d77d44a22c88fa3",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "fs/nfs/direct.c"
},
"signature_type": "Line"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"128679284166626136160540364316510765798",
"63950288892968772178111632548448434926",
"284164680976698337403232824989320812716",
"140259164343781647330234506749378916706"
]
},
"id": "CVE-2024-26958-7d04be6a",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@80d24b308b7ee7037fc90d8ac99f6f78df0a256f",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "fs/nfs/write.c"
},
"signature_type": "Line"
},
{
"digest": {
"function_hash": "305142990905777991319828880214886131278",
"length": 78.0
},
"id": "CVE-2024-26958-82fec4d0",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6cd3f13aaa62970b5169d990e936b2e96943bc6a",
"signature_version": "v1",
"deprecated": false,
"target": {
"function": "nfs_commit_begin",
"file": "fs/nfs/write.c"
},
"signature_type": "Function"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"245838355196996765046746221457348339410",
"138048540744500117770025047660581644339",
"93567744276325275857646424109446434866",
"314110375120196250428105647953017584803",
"253472359728382556874384693417775169217",
"113032924055457360462400749482328469151",
"6207186655233075980200704958990888799",
"203059874322775985737220597237801017911"
]
},
"id": "CVE-2024-26958-84ff8f16",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e25447c35f8745337ea8bc0c9697fcac14df8605",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "fs/nfs/direct.c"
},
"signature_type": "Line"
},
{
"digest": {
"function_hash": "305142990905777991319828880214886131278",
"length": 78.0
},
"id": "CVE-2024-26958-88c4be44",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cf54f66e1dd78990ec6b32177bca7e6ea2144a95",
"signature_version": "v1",
"deprecated": false,
"target": {
"function": "nfs_commit_begin",
"file": "fs/nfs/write.c"
},
"signature_type": "Function"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"245838355196996765046746221457348339410",
"138048540744500117770025047660581644339",
"93567744276325275857646424109446434866",
"314110375120196250428105647953017584803",
"253472359728382556874384693417775169217",
"113032924055457360462400749482328469151",
"6207186655233075980200704958990888799",
"203059874322775985737220597237801017911"
]
},
"id": "CVE-2024-26958-89bf013d",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@17f46b803d4f23c66cacce81db35fef3adb8f2af",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "fs/nfs/direct.c"
},
"signature_type": "Line"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"139981602022285979432442873348271482281",
"324194316824651369254183627135978017319",
"50031624398328311402595051117737097323",
"185140313086485361251431408913889686975"
]
},
"id": "CVE-2024-26958-91babd01",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3abc2d160ed8213948b147295d77d44a22c88fa3",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "include/linux/nfs_fs.h"
},
"signature_type": "Line"
},
{
"digest": {
"function_hash": "113174769764619044624973187606831768981",
"length": 268.0
},
"id": "CVE-2024-26958-91c00dd4",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4595d90b5d2ea5fa4d318d13f59055aa4bf3e7f5",
"signature_version": "v1",
"deprecated": false,
"target": {
"function": "nfs_direct_commit_schedule",
"file": "fs/nfs/direct.c"
},
"signature_type": "Function"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"30963845036465161035065880357239205211",
"324194316824651369254183627135978017319",
"222994051007050847711747062189615333244",
"114246307379218621261022048620536246116"
]
},
"id": "CVE-2024-26958-9483dab7",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4595d90b5d2ea5fa4d318d13f59055aa4bf3e7f5",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "include/linux/nfs_fs.h"
},
"signature_type": "Line"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"128679284166626136160540364316510765798",
"63950288892968772178111632548448434926",
"284164680976698337403232824989320812716",
"140259164343781647330234506749378916706"
]
},
"id": "CVE-2024-26958-96a548aa",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@1daf52b5ffb24870fbeda20b4967526d8f9e12ab",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "fs/nfs/write.c"
},
"signature_type": "Line"
},
{
"digest": {
"function_hash": "305142990905777991319828880214886131278",
"length": 78.0
},
"id": "CVE-2024-26958-a17034e0",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@80d24b308b7ee7037fc90d8ac99f6f78df0a256f",
"signature_version": "v1",
"deprecated": false,
"target": {
"function": "nfs_commit_begin",
"file": "fs/nfs/write.c"
},
"signature_type": "Function"
},
{
"digest": {
"function_hash": "113174769764619044624973187606831768981",
"length": 268.0
},
"id": "CVE-2024-26958-aa3d2d6b",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@80d24b308b7ee7037fc90d8ac99f6f78df0a256f",
"signature_version": "v1",
"deprecated": false,
"target": {
"function": "nfs_direct_commit_schedule",
"file": "fs/nfs/direct.c"
},
"signature_type": "Function"
},
{
"digest": {
"function_hash": "305142990905777991319828880214886131278",
"length": 78.0
},
"id": "CVE-2024-26958-ab3ec66b",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@17f46b803d4f23c66cacce81db35fef3adb8f2af",
"signature_version": "v1",
"deprecated": false,
"target": {
"function": "nfs_commit_begin",
"file": "fs/nfs/write.c"
},
"signature_type": "Function"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"128679284166626136160540364316510765798",
"63950288892968772178111632548448434926",
"284164680976698337403232824989320812716",
"140259164343781647330234506749378916706"
]
},
"id": "CVE-2024-26958-ac9331b6",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@17f46b803d4f23c66cacce81db35fef3adb8f2af",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "fs/nfs/write.c"
},
"signature_type": "Line"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"128679284166626136160540364316510765798",
"63950288892968772178111632548448434926",
"284164680976698337403232824989320812716",
"140259164343781647330234506749378916706"
]
},
"id": "CVE-2024-26958-bcf35c6b",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cf54f66e1dd78990ec6b32177bca7e6ea2144a95",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "fs/nfs/write.c"
},
"signature_type": "Line"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"55180376075741112456257446514126252430",
"286604209392292106842396866094451142501",
"235200616118641297447082835155967962878",
"114246307379218621261022048620536246116"
]
},
"id": "CVE-2024-26958-bdfa563e",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6cd3f13aaa62970b5169d990e936b2e96943bc6a",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "include/linux/nfs_fs.h"
},
"signature_type": "Line"
},
{
"digest": {
"function_hash": "113174769764619044624973187606831768981",
"length": 268.0
},
"id": "CVE-2024-26958-c3a6ba7e",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6cd3f13aaa62970b5169d990e936b2e96943bc6a",
"signature_version": "v1",
"deprecated": false,
"target": {
"function": "nfs_direct_commit_schedule",
"file": "fs/nfs/direct.c"
},
"signature_type": "Function"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"128679284166626136160540364316510765798",
"63950288892968772178111632548448434926",
"284164680976698337403232824989320812716",
"140259164343781647330234506749378916706"
]
},
"id": "CVE-2024-26958-c3c1a684",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e25447c35f8745337ea8bc0c9697fcac14df8605",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "fs/nfs/write.c"
},
"signature_type": "Line"
},
{
"digest": {
"function_hash": "113174769764619044624973187606831768981",
"length": 268.0
},
"id": "CVE-2024-26958-c718d77b",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@1daf52b5ffb24870fbeda20b4967526d8f9e12ab",
"signature_version": "v1",
"deprecated": false,
"target": {
"function": "nfs_direct_commit_schedule",
"file": "fs/nfs/direct.c"
},
"signature_type": "Function"
},
{
"digest": {
"function_hash": "113174769764619044624973187606831768981",
"length": 268.0
},
"id": "CVE-2024-26958-e3e0ba87",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3abc2d160ed8213948b147295d77d44a22c88fa3",
"signature_version": "v1",
"deprecated": false,
"target": {
"function": "nfs_direct_commit_schedule",
"file": "fs/nfs/direct.c"
},
"signature_type": "Function"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"245838355196996765046746221457348339410",
"138048540744500117770025047660581644339",
"93567744276325275857646424109446434866",
"314110375120196250428105647953017584803",
"253472359728382556874384693417775169217",
"113032924055457360462400749482328469151",
"6207186655233075980200704958990888799",
"203059874322775985737220597237801017911"
]
},
"id": "CVE-2024-26958-e4835d54",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4595d90b5d2ea5fa4d318d13f59055aa4bf3e7f5",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "fs/nfs/direct.c"
},
"signature_type": "Line"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"128679284166626136160540364316510765798",
"63950288892968772178111632548448434926",
"284164680976698337403232824989320812716",
"140259164343781647330234506749378916706"
]
},
"id": "CVE-2024-26958-e79d50b0",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3abc2d160ed8213948b147295d77d44a22c88fa3",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "fs/nfs/write.c"
},
"signature_type": "Line"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"139981602022285979432442873348271482281",
"324194316824651369254183627135978017319",
"50031624398328311402595051117737097323",
"185140313086485361251431408913889686975"
]
},
"id": "CVE-2024-26958-e851f2aa",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cf54f66e1dd78990ec6b32177bca7e6ea2144a95",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "include/linux/nfs_fs.h"
},
"signature_type": "Line"
},
{
"digest": {
"function_hash": "113174769764619044624973187606831768981",
"length": 268.0
},
"id": "CVE-2024-26958-f233675f",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e25447c35f8745337ea8bc0c9697fcac14df8605",
"signature_version": "v1",
"deprecated": false,
"target": {
"function": "nfs_direct_commit_schedule",
"file": "fs/nfs/direct.c"
},
"signature_type": "Function"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"139981602022285979432442873348271482281",
"324194316824651369254183627135978017319",
"50031624398328311402595051117737097323",
"185140313086485361251431408913889686975"
]
},
"id": "CVE-2024-26958-fa5647f2",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e25447c35f8745337ea8bc0c9697fcac14df8605",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "include/linux/nfs_fs.h"
},
"signature_type": "Line"
},
{
"digest": {
"function_hash": "305142990905777991319828880214886131278",
"length": 78.0
},
"id": "CVE-2024-26958-fc0fd395",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3abc2d160ed8213948b147295d77d44a22c88fa3",
"signature_version": "v1",
"deprecated": false,
"target": {
"function": "nfs_commit_begin",
"file": "fs/nfs/write.c"
},
"signature_type": "Function"
}
]