In the Linux kernel, the following vulnerability has been resolved:
fs/proc: dotaskstat: use sig->stats_lock to gather the threads/children stats
locktasksighand() can trigger a hard lockup. If NRCPUS threads call dotaskstat() at the same time and the process has NRTHREADS, it will spin with irqs disabled O(NRCPUS * NRTHREADS) time.
Change dotaskstat() to use sig->stats_lock to gather the statistics outside of ->siglock protected section, in the likely case this code will run lockless.
[
{
"digest": {
"function_hash": "134854827897791736378510774576216579169",
"length": 4579.0
},
"id": "CVE-2024-26686-0491813f",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0c35d1914353799c54fa1843fe7dea6fcbcdbac5",
"target": {
"file": "fs/proc/array.c",
"function": "do_task_stat"
},
"deprecated": false
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"326723455037394190150261848630939437279",
"82527517900675368104510315914842671407",
"254836658724743084957761717368063247344",
"171845046275609234252326944246920010284",
"326251515259541781890161736311259948314",
"6447969524294962705474369713805595129",
"214778708721542858514656303333050561401",
"222543568791482990693697181593737549696",
"212916833946821027477585534427030531034",
"73891941713734837827072660527714065024",
"275210815673035583028343185283062049442",
"70442157995845946853547684092762197633",
"268958127010036484015665302199557072686",
"19720549432531841785281045933011482403",
"80051937674610573327897478982936250304",
"246565233543333108475082067737704822714",
"38262990285499499193348390020237631776",
"336157927075326273316016501511016955934",
"119053849350646643085766527098249079744",
"275084506998285686004500626967322934489",
"65002400760772982879017445701425584780",
"320012393126824700471918355284128570062",
"173363853582051774755110553860046935699",
"113870913675156483862458536708997334756",
"279345581636844441448989302637002098462",
"182525456276628758065948157804952945166",
"218842363669617102819762241299156172269",
"163462167239377716433752754227246203803",
"186013233576540661361284572517158303569",
"245303874066491713461831228821499609933",
"124602809888719652726193152282044785764",
"87550997950442452480388335149897994305",
"102857481775111862397908154248878516643",
"272010991132992322277122768909034095566",
"97655154289249972905380723877115752045",
"198525500002504763924003988641012007181",
"288587979077308047499526518484632323152",
"171697515029882549093065108990284625633",
"182284631797472693811102516193433986105"
]
},
"id": "CVE-2024-26686-0f8c4d62",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3820b0fac7732a653bcc6f6ac20c1d72e697f8f6",
"target": {
"file": "fs/proc/array.c"
},
"deprecated": false
},
{
"digest": {
"function_hash": "225787198763854073384713920148625162414",
"length": 4680.0
},
"id": "CVE-2024-26686-13a1d318",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@7601df8031fd67310af891897ef6cc0df4209305",
"target": {
"file": "fs/proc/array.c",
"function": "do_task_stat"
},
"deprecated": false
},
{
"digest": {
"function_hash": "294387035637641926546983445444348777785",
"length": 4686.0
},
"id": "CVE-2024-26686-5b8a03e7",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3820b0fac7732a653bcc6f6ac20c1d72e697f8f6",
"target": {
"file": "fs/proc/array.c",
"function": "do_task_stat"
},
"deprecated": false
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"326723455037394190150261848630939437279",
"82527517900675368104510315914842671407",
"254836658724743084957761717368063247344",
"171845046275609234252326944246920010284",
"326251515259541781890161736311259948314",
"6447969524294962705474369713805595129",
"214778708721542858514656303333050561401",
"222543568791482990693697181593737549696",
"212916833946821027477585534427030531034",
"73891941713734837827072660527714065024",
"275210815673035583028343185283062049442",
"70442157995845946853547684092762197633",
"268958127010036484015665302199557072686",
"19720549432531841785281045933011482403",
"80051937674610573327897478982936250304",
"246565233543333108475082067737704822714",
"38262990285499499193348390020237631776",
"336157927075326273316016501511016955934",
"119053849350646643085766527098249079744",
"275084506998285686004500626967322934489",
"65002400760772982879017445701425584780",
"320012393126824700471918355284128570062",
"173363853582051774755110553860046935699",
"113870913675156483862458536708997334756",
"98166391344649819451985144118484279643",
"333807986303357521670960469507829220597",
"334910704469279699875393351065402584050",
"214384894932672049584274576820832904051",
"336452188850861341639225390306012119293",
"69372757802381174142956556476232496165",
"142557937080326429357947531966000671851",
"141544123618704108972278634270523070591",
"33299102314891481216988647493058762938",
"272010991132992322277122768909034095566",
"97655154289249972905380723877115752045",
"198525500002504763924003988641012007181",
"288587979077308047499526518484632323152",
"171697515029882549093065108990284625633",
"182284631797472693811102516193433986105"
]
},
"id": "CVE-2024-26686-5e149653",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cf4b8c39b9a0bd81c47afc7ef62914a62dd5ec4d",
"target": {
"file": "fs/proc/array.c"
},
"deprecated": false
},
{
"digest": {
"function_hash": "225787198763854073384713920148625162414",
"length": 4680.0
},
"id": "CVE-2024-26686-b13c7360",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@27978243f165b44e342f28f449b91327944ea071",
"target": {
"file": "fs/proc/array.c",
"function": "do_task_stat"
},
"deprecated": false
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"326723455037394190150261848630939437279",
"82527517900675368104510315914842671407",
"254836658724743084957761717368063247344",
"171845046275609234252326944246920010284",
"326251515259541781890161736311259948314",
"6447969524294962705474369713805595129",
"296794947633645757667694771928945008842",
"159286421446573637265874512941944387845",
"265920239903343868277685942544428354506",
"246644046039451694687984772218989938852",
"87728118238280283531615897216919671094",
"298583702909540511547253395992633850941",
"118502836153261205122207088502328039843",
"80051937674610573327897478982936250304",
"246565233543333108475082067737704822714",
"38262990285499499193348390020237631776",
"336157927075326273316016501511016955934",
"119053849350646643085766527098249079744",
"275084506998285686004500626967322934489",
"65002400760772982879017445701425584780",
"320012393126824700471918355284128570062",
"173363853582051774755110553860046935699",
"113870913675156483862458536708997334756",
"279345581636844441448989302637002098462",
"182525456276628758065948157804952945166",
"218842363669617102819762241299156172269",
"163462167239377716433752754227246203803",
"186013233576540661361284572517158303569",
"245303874066491713461831228821499609933",
"124602809888719652726193152282044785764",
"87550997950442452480388335149897994305",
"305788832430839435662715166732312644418",
"9379432790266932000302419825598392420",
"31038076063495215625855871781891027989",
"306718569547003504754356516149567833439",
"39541861139976606043296543466321977841",
"48423339465940835572308773603352659714",
"36971358397135785967103020720579320771",
"137730668423249492575155118052415464922",
"239949621191880669824580157331167983764",
"276229592180226722011845371290933252549",
"252986078694790540458731092828929779753",
"100338210123987286766024624512716683254",
"311866285627844474069946364805350161293"
]
},
"id": "CVE-2024-26686-bcabf338",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4fe85bdaabd63f8f8579b24a10ed597c9c482164",
"target": {
"file": "fs/proc/array.c"
},
"deprecated": false
},
{
"digest": {
"function_hash": "241606954120555558485573256309404301389",
"length": 4608.0
},
"id": "CVE-2024-26686-c1f56bf5",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4fe85bdaabd63f8f8579b24a10ed597c9c482164",
"target": {
"file": "fs/proc/array.c",
"function": "do_task_stat"
},
"deprecated": false
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"326723455037394190150261848630939437279",
"82527517900675368104510315914842671407",
"254836658724743084957761717368063247344",
"171845046275609234252326944246920010284",
"326251515259541781890161736311259948314",
"6447969524294962705474369713805595129",
"296794947633645757667694771928945008842",
"159286421446573637265874512941944387845",
"265920239903343868277685942544428354506",
"275210815673035583028343185283062049442",
"70442157995845946853547684092762197633",
"268958127010036484015665302199557072686",
"19720549432531841785281045933011482403",
"80051937674610573327897478982936250304",
"246565233543333108475082067737704822714",
"38262990285499499193348390020237631776",
"336157927075326273316016501511016955934",
"119053849350646643085766527098249079744",
"275084506998285686004500626967322934489",
"65002400760772982879017445701425584780",
"320012393126824700471918355284128570062",
"173363853582051774755110553860046935699",
"113870913675156483862458536708997334756",
"279345581636844441448989302637002098462",
"182525456276628758065948157804952945166",
"218842363669617102819762241299156172269",
"163462167239377716433752754227246203803",
"186013233576540661361284572517158303569",
"245303874066491713461831228821499609933",
"124602809888719652726193152282044785764",
"87550997950442452480388335149897994305",
"102857481775111862397908154248878516643",
"230614661370110846580701514461562620533",
"125845441219780475781787367943521134268",
"39541861139976606043296543466321977841",
"48423339465940835572308773603352659714",
"36971358397135785967103020720579320771",
"137730668423249492575155118052415464922",
"239949621191880669824580157331167983764",
"181172702824725103238307311675693894423",
"288587979077308047499526518484632323152",
"171697515029882549093065108990284625633",
"182284631797472693811102516193433986105"
]
},
"id": "CVE-2024-26686-d21035a1",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0c35d1914353799c54fa1843fe7dea6fcbcdbac5",
"target": {
"file": "fs/proc/array.c"
},
"deprecated": false
},
{
"digest": {
"function_hash": "225787198763854073384713920148625162414",
"length": 4680.0
},
"id": "CVE-2024-26686-de80105e",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cf4b8c39b9a0bd81c47afc7ef62914a62dd5ec4d",
"target": {
"file": "fs/proc/array.c",
"function": "do_task_stat"
},
"deprecated": false
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"326723455037394190150261848630939437279",
"82527517900675368104510315914842671407",
"254836658724743084957761717368063247344",
"171845046275609234252326944246920010284",
"326251515259541781890161736311259948314",
"6447969524294962705474369713805595129",
"214778708721542858514656303333050561401",
"222543568791482990693697181593737549696",
"212916833946821027477585534427030531034",
"73891941713734837827072660527714065024",
"275210815673035583028343185283062049442",
"70442157995845946853547684092762197633",
"268958127010036484015665302199557072686",
"19720549432531841785281045933011482403",
"80051937674610573327897478982936250304",
"246565233543333108475082067737704822714",
"38262990285499499193348390020237631776",
"336157927075326273316016501511016955934",
"119053849350646643085766527098249079744",
"275084506998285686004500626967322934489",
"65002400760772982879017445701425584780",
"320012393126824700471918355284128570062",
"173363853582051774755110553860046935699",
"113870913675156483862458536708997334756",
"98166391344649819451985144118484279643",
"333807986303357521670960469507829220597",
"334910704469279699875393351065402584050",
"214384894932672049584274576820832904051",
"336452188850861341639225390306012119293",
"69372757802381174142956556476232496165",
"142557937080326429357947531966000671851",
"141544123618704108972278634270523070591",
"33299102314891481216988647493058762938",
"272010991132992322277122768909034095566",
"97655154289249972905380723877115752045",
"198525500002504763924003988641012007181",
"288587979077308047499526518484632323152",
"171697515029882549093065108990284625633",
"182284631797472693811102516193433986105"
]
},
"id": "CVE-2024-26686-e8943a43",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@7601df8031fd67310af891897ef6cc0df4209305",
"target": {
"file": "fs/proc/array.c"
},
"deprecated": false
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"326723455037394190150261848630939437279",
"82527517900675368104510315914842671407",
"254836658724743084957761717368063247344",
"171845046275609234252326944246920010284",
"326251515259541781890161736311259948314",
"6447969524294962705474369713805595129",
"214778708721542858514656303333050561401",
"222543568791482990693697181593737549696",
"212916833946821027477585534427030531034",
"73891941713734837827072660527714065024",
"275210815673035583028343185283062049442",
"70442157995845946853547684092762197633",
"268958127010036484015665302199557072686",
"19720549432531841785281045933011482403",
"80051937674610573327897478982936250304",
"246565233543333108475082067737704822714",
"38262990285499499193348390020237631776",
"336157927075326273316016501511016955934",
"119053849350646643085766527098249079744",
"275084506998285686004500626967322934489",
"65002400760772982879017445701425584780",
"320012393126824700471918355284128570062",
"173363853582051774755110553860046935699",
"113870913675156483862458536708997334756",
"98166391344649819451985144118484279643",
"333807986303357521670960469507829220597",
"334910704469279699875393351065402584050",
"214384894932672049584274576820832904051",
"336452188850861341639225390306012119293",
"69372757802381174142956556476232496165",
"142557937080326429357947531966000671851",
"141544123618704108972278634270523070591",
"33299102314891481216988647493058762938",
"272010991132992322277122768909034095566",
"97655154289249972905380723877115752045",
"198525500002504763924003988641012007181",
"288587979077308047499526518484632323152",
"171697515029882549093065108990284625633",
"182284631797472693811102516193433986105"
]
},
"id": "CVE-2024-26686-f21e5407",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@27978243f165b44e342f28f449b91327944ea071",
"target": {
"file": "fs/proc/array.c"
},
"deprecated": false
}
]