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.
{ "vanir_signatures": [ { "id": "CVE-2024-26686-0491813f", "signature_type": "Function", "digest": { "function_hash": "134854827897791736378510774576216579169", "length": 4579.0 }, "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, "signature_version": "v1" }, { "id": "CVE-2024-26686-0f8c4d62", "signature_type": "Line", "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" ] }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3820b0fac7732a653bcc6f6ac20c1d72e697f8f6", "target": { "file": "fs/proc/array.c" }, "deprecated": false, "signature_version": "v1" }, { "id": "CVE-2024-26686-13a1d318", "signature_type": "Function", "digest": { "function_hash": "225787198763854073384713920148625162414", "length": 4680.0 }, "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, "signature_version": "v1" }, { "id": "CVE-2024-26686-5b8a03e7", "signature_type": "Function", "digest": { "function_hash": "294387035637641926546983445444348777785", "length": 4686.0 }, "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, "signature_version": "v1" }, { "id": "CVE-2024-26686-5e149653", "signature_type": "Line", "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" ] }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cf4b8c39b9a0bd81c47afc7ef62914a62dd5ec4d", "target": { "file": "fs/proc/array.c" }, "deprecated": false, "signature_version": "v1" }, { "id": "CVE-2024-26686-b13c7360", "signature_type": "Function", "digest": { "function_hash": "225787198763854073384713920148625162414", "length": 4680.0 }, "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, "signature_version": "v1" }, { "id": "CVE-2024-26686-bcabf338", "signature_type": "Line", "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" ] }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4fe85bdaabd63f8f8579b24a10ed597c9c482164", "target": { "file": "fs/proc/array.c" }, "deprecated": false, "signature_version": "v1" }, { "id": "CVE-2024-26686-c1f56bf5", "signature_type": "Function", "digest": { "function_hash": "241606954120555558485573256309404301389", "length": 4608.0 }, "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, "signature_version": "v1" }, { "id": "CVE-2024-26686-d21035a1", "signature_type": "Line", "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" ] }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0c35d1914353799c54fa1843fe7dea6fcbcdbac5", "target": { "file": "fs/proc/array.c" }, "deprecated": false, "signature_version": "v1" }, { "id": "CVE-2024-26686-de80105e", "signature_type": "Function", "digest": { "function_hash": "225787198763854073384713920148625162414", "length": 4680.0 }, "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, "signature_version": "v1" }, { "id": "CVE-2024-26686-e8943a43", "signature_type": "Line", "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" ] }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@7601df8031fd67310af891897ef6cc0df4209305", "target": { "file": "fs/proc/array.c" }, "deprecated": false, "signature_version": "v1" }, { "id": "CVE-2024-26686-f21e5407", "signature_type": "Line", "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" ] }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@27978243f165b44e342f28f449b91327944ea071", "target": { "file": "fs/proc/array.c" }, "deprecated": false, "signature_version": "v1" } ] }