In the Linux kernel, the following vulnerability has been resolved:
net: usb: lan78xx: Fix double free issue with interrupt buffer allocation
In lan78xx_probe(), the buffer buf was being freed twice: once
implicitly through usb_free_urb(dev->urb_intr) with the
URB_FREE_BUFFER flag and again explicitly by kfree(buf). This caused
a double free issue.
To resolve this, reordered kmalloc() and usb_alloc_urb() calls to
simplify the initialization sequence and removed the redundant
kfree(buf). Now, buf is allocated after usb_alloc_urb(), ensuring
it is correctly managed by usb_fill_int_urb() and freed by
usb_free_urb() as intended.
[
{
"signature_type": "Function",
"id": "CVE-2024-53213-02f14426",
"target": {
"function": "lan78xx_probe",
"file": "drivers/net/usb/lan78xx.c"
},
"digest": {
"function_hash": "327844259605282354202618876193859264091",
"length": 3352.0
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@7ac9f3c981eeceee2ec4d30d850f4a6f50a1ec40",
"deprecated": false
},
{
"signature_type": "Line",
"id": "CVE-2024-53213-0659cb81",
"target": {
"file": "drivers/net/usb/lan78xx.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"211641829516827250561155459896449912948",
"267037829873988101300342015150538621725",
"6395148448330973791418480544012324348",
"63064361500785529919961853059442503345",
"335653753454750662188662444198316195235",
"246317242957389279273914741008356195225",
"68410643453836989530097079770153897747",
"233588332343387803527037980494156574266",
"9680884380056642046917621396901225964",
"325242250929473522573829883604304781591",
"313498245931316186546268745067461142841",
"4071596075408379719238624516084444614",
"211521483325379554860234740387865910071",
"26124762712946780939259551709248085687",
"149209459883702199295526126156688100557",
"2359323069844462614175210379480086790",
"105879175482939950423260093243039849808",
"264302383320058688136769802697101396705",
"48065470709028915548500401460039872396",
"340019147407393524366442854489693401266",
"12761830724133807938229567366516057147",
"175830730273336257505891905292950196440",
"236645225609250249312244465106078983126",
"186905783239957825850985180755353565826",
"189000656698283081032688930092957280967",
"236169942027386935538534127462799668318",
"278831204144402229600765343115840977470",
"203936642803201164643982053260043040176",
"320332649471881034752466460669087677566",
"72574128756925551603974775559934387271",
"28029186219922118373412416241301349328",
"159668137330345366838149240149322076918",
"218225425544610701506622980648741219584"
]
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@03819abbeb11117dcbba40bfe322b88c0c88a6b6",
"deprecated": false
},
{
"signature_type": "Function",
"id": "CVE-2024-53213-20c0f0d2",
"target": {
"function": "lan78xx_probe",
"file": "drivers/net/usb/lan78xx.c"
},
"digest": {
"function_hash": "327844259605282354202618876193859264091",
"length": 3352.0
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a422ebec863d99d5607fb41bb7af3347fcb436d3",
"deprecated": false
},
{
"signature_type": "Line",
"id": "CVE-2024-53213-25d66adc",
"target": {
"file": "drivers/net/usb/lan78xx.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"211641829516827250561155459896449912948",
"267037829873988101300342015150538621725",
"6395148448330973791418480544012324348",
"63064361500785529919961853059442503345",
"335653753454750662188662444198316195235",
"246317242957389279273914741008356195225",
"68410643453836989530097079770153897747",
"233588332343387803527037980494156574266",
"9680884380056642046917621396901225964",
"325242250929473522573829883604304781591",
"313498245931316186546268745067461142841",
"4071596075408379719238624516084444614",
"211521483325379554860234740387865910071",
"26124762712946780939259551709248085687",
"149209459883702199295526126156688100557",
"2359323069844462614175210379480086790",
"105879175482939950423260093243039849808",
"264302383320058688136769802697101396705",
"48065470709028915548500401460039872396",
"340019147407393524366442854489693401266",
"12761830724133807938229567366516057147",
"175830730273336257505891905292950196440",
"236645225609250249312244465106078983126",
"186905783239957825850985180755353565826",
"189000656698283081032688930092957280967",
"236169942027386935538534127462799668318",
"278831204144402229600765343115840977470",
"203936642803201164643982053260043040176",
"320332649471881034752466460669087677566",
"72574128756925551603974775559934387271",
"28029186219922118373412416241301349328",
"159668137330345366838149240149322076918",
"218225425544610701506622980648741219584"
]
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@7ac9f3c981eeceee2ec4d30d850f4a6f50a1ec40",
"deprecated": false
},
{
"signature_type": "Line",
"id": "CVE-2024-53213-5db32c58",
"target": {
"file": "drivers/net/usb/lan78xx.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"211641829516827250561155459896449912948",
"267037829873988101300342015150538621725",
"6395148448330973791418480544012324348",
"63064361500785529919961853059442503345",
"335653753454750662188662444198316195235",
"246317242957389279273914741008356195225",
"68410643453836989530097079770153897747",
"233588332343387803527037980494156574266",
"9680884380056642046917621396901225964",
"325242250929473522573829883604304781591",
"313498245931316186546268745067461142841",
"4071596075408379719238624516084444614",
"211521483325379554860234740387865910071",
"26124762712946780939259551709248085687",
"149209459883702199295526126156688100557",
"2359323069844462614175210379480086790",
"105879175482939950423260093243039849808",
"264302383320058688136769802697101396705",
"48065470709028915548500401460039872396",
"340019147407393524366442854489693401266",
"12761830724133807938229567366516057147",
"175830730273336257505891905292950196440",
"236645225609250249312244465106078983126",
"186905783239957825850985180755353565826",
"189000656698283081032688930092957280967",
"236169942027386935538534127462799668318",
"278831204144402229600765343115840977470",
"203936642803201164643982053260043040176",
"320332649471881034752466460669087677566",
"72574128756925551603974775559934387271",
"28029186219922118373412416241301349328",
"159668137330345366838149240149322076918",
"218225425544610701506622980648741219584"
]
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b09512aea6223eec756f52aa584fc29eeab57480",
"deprecated": false
},
{
"signature_type": "Line",
"id": "CVE-2024-53213-694bd486",
"target": {
"file": "drivers/net/usb/lan78xx.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"211641829516827250561155459896449912948",
"267037829873988101300342015150538621725",
"6395148448330973791418480544012324348",
"63064361500785529919961853059442503345",
"335653753454750662188662444198316195235",
"246317242957389279273914741008356195225",
"68410643453836989530097079770153897747",
"233588332343387803527037980494156574266",
"9680884380056642046917621396901225964",
"325242250929473522573829883604304781591",
"313498245931316186546268745067461142841",
"4071596075408379719238624516084444614",
"211521483325379554860234740387865910071",
"26124762712946780939259551709248085687",
"149209459883702199295526126156688100557",
"2359323069844462614175210379480086790",
"105879175482939950423260093243039849808",
"264302383320058688136769802697101396705",
"48065470709028915548500401460039872396",
"340019147407393524366442854489693401266",
"12761830724133807938229567366516057147",
"175830730273336257505891905292950196440",
"236645225609250249312244465106078983126",
"186905783239957825850985180755353565826",
"189000656698283081032688930092957280967",
"236169942027386935538534127462799668318",
"278831204144402229600765343115840977470",
"203936642803201164643982053260043040176",
"320332649471881034752466460669087677566",
"72574128756925551603974775559934387271",
"28029186219922118373412416241301349328",
"159668137330345366838149240149322076918",
"218225425544610701506622980648741219584"
]
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a422ebec863d99d5607fb41bb7af3347fcb436d3",
"deprecated": false
},
{
"signature_type": "Function",
"id": "CVE-2024-53213-73aed850",
"target": {
"function": "lan78xx_probe",
"file": "drivers/net/usb/lan78xx.c"
},
"digest": {
"function_hash": "327844259605282354202618876193859264091",
"length": 3352.0
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@977128343fc2a30737399b58df8ea77e94f164bd",
"deprecated": false
},
{
"signature_type": "Function",
"id": "CVE-2024-53213-941c7756",
"target": {
"function": "lan78xx_probe",
"file": "drivers/net/usb/lan78xx.c"
},
"digest": {
"function_hash": "327844259605282354202618876193859264091",
"length": 3352.0
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@03819abbeb11117dcbba40bfe322b88c0c88a6b6",
"deprecated": false
},
{
"signature_type": "Line",
"id": "CVE-2024-53213-c7bca933",
"target": {
"file": "drivers/net/usb/lan78xx.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"211641829516827250561155459896449912948",
"267037829873988101300342015150538621725",
"6395148448330973791418480544012324348",
"63064361500785529919961853059442503345",
"335653753454750662188662444198316195235",
"246317242957389279273914741008356195225",
"68410643453836989530097079770153897747",
"233588332343387803527037980494156574266",
"9680884380056642046917621396901225964",
"325242250929473522573829883604304781591",
"313498245931316186546268745067461142841",
"4071596075408379719238624516084444614",
"211521483325379554860234740387865910071",
"26124762712946780939259551709248085687",
"149209459883702199295526126156688100557",
"2359323069844462614175210379480086790",
"105879175482939950423260093243039849808",
"264302383320058688136769802697101396705",
"48065470709028915548500401460039872396",
"340019147407393524366442854489693401266",
"12761830724133807938229567366516057147",
"175830730273336257505891905292950196440",
"236645225609250249312244465106078983126",
"186905783239957825850985180755353565826",
"189000656698283081032688930092957280967",
"236169942027386935538534127462799668318",
"278831204144402229600765343115840977470",
"203936642803201164643982053260043040176",
"320332649471881034752466460669087677566",
"72574128756925551603974775559934387271",
"28029186219922118373412416241301349328",
"159668137330345366838149240149322076918",
"218225425544610701506622980648741219584"
]
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@977128343fc2a30737399b58df8ea77e94f164bd",
"deprecated": false
},
{
"signature_type": "Function",
"id": "CVE-2024-53213-fe73324a",
"target": {
"function": "lan78xx_probe",
"file": "drivers/net/usb/lan78xx.c"
},
"digest": {
"function_hash": "327844259605282354202618876193859264091",
"length": 3352.0
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b09512aea6223eec756f52aa584fc29eeab57480",
"deprecated": false
}
]