{"id":"CVE-2024-26910","state":"PUBLISHED","title":"netfilter: ipset: fix performance regression in swap operation","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nnetfilter: ipset: fix performance regression in swap operation\n\nThe patch \"netfilter: ipset: fix race condition between swap/destroy\nand kernel side add/del/test\", commit 28628fa9 fixes a race condition.\nBut the synchronize_rcu() added to the swap function unnecessarily slows\nit down: it can safely be moved to destroy and use call_rcu() instead.\n\nEric Dumazet pointed out that simply calling the destroy functions as\nrcu callback does not work: sets with timeout use garbage collectors\nwhich need cancelling at destroy which can wait. Therefore the destroy\nfunctions are split into two: cancelling garbage collectors safely at\nexecuting the command received by netlink and moving the remaining\npart only into the rcu callback.","publishedAt":"2024-04-17T15:59:21.967Z","updatedAt":"2026-05-23T15:39:51.569Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"427deb5ba5661c4ae1cfb35955d2e01bd5f3090a","status":"affected","lessThan":"c7f2733e5011bfd136f1ca93497394d43aa76225","versionType":"git"},{"version":"e7152a138a5ac77439ff4e7a7533448a7d4c260d","status":"affected","lessThan":"a24d5f2ac8ef702a58e55ec276aad29b4bd97e05","versionType":"git"},{"version":"8bb930c3a1eacec1b14817f565ff81667c7c5dfa","status":"affected","lessThan":"c2dc077d8f722a1c73a24e674f925602ee5ece49","versionType":"git"},{"version":"875ee3a09e27b7adb7006ca6d16faf7f33415aa5","status":"affected","lessThan":"653bc5e6d9995d7d5f497c665b321875a626161c","versionType":"git"},{"version":"23c31036f862582f98386120aee55c9ae23d7899","status":"affected","lessThan":"b93a6756a01f4fd2f329a39216f9824c56a66397","versionType":"git"},{"version":"28628fa952fefc7f2072ce6e8016968cc452b1ba","status":"affected","lessThan":"970709a67696b100a57b33af1a3d75fc34b747eb","versionType":"git"},{"version":"28628fa952fefc7f2072ce6e8016968cc452b1ba","status":"affected","lessThan":"97f7cf1cd80eeed3b7c808b7c12463295c751001","versionType":"git"},{"version":"a12606e5ad0cee8f4ba3ec68561c4d6275d2df57","status":"affected","versionType":"git"},{"version":"5.4.264","status":"affected","lessThan":"5.4.269","versionType":"semver"},{"version":"5.10.204","status":"affected","lessThan":"5.10.210","versionType":"semver"},{"version":"5.15.143","status":"affected","lessThan":"5.15.149","versionType":"semver"},{"version":"6.1.68","status":"affected","lessThan":"6.1.79","versionType":"semver"},{"version":"6.6.7","status":"affected","lessThan":"6.6.18","versionType":"semver"},{"version":"4.19.302","status":"affected","lessThan":"4.20","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["include/linux/netfilter/ipset/ip_set.h","net/netfilter/ipset/ip_set_bitmap_gen.h","net/netfilter/ipset/ip_set_core.c","net/netfilter/ipset/ip_set_hash_gen.h","net/netfilter/ipset/ip_set_list_set.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.7","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.7","versionType":"semver"},{"version":"5.4.269","status":"unaffected","lessThanOrEqual":"5.4.*","versionType":"semver"},{"version":"5.10.210","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.149","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.79","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.18","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.7.6","status":"unaffected","lessThanOrEqual":"6.7.*","versionType":"semver"},{"version":"6.8","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["include/linux/netfilter/ipset/ip_set.h","net/netfilter/ipset/ip_set_bitmap_gen.h","net/netfilter/ipset/ip_set_core.c","net/netfilter/ipset/ip_set_hash_gen.h","net/netfilter/ipset/ip_set_list_set.c"]}],"references":["https://git.kernel.org/stable/c/c7f2733e5011bfd136f1ca93497394d43aa76225","https://git.kernel.org/stable/c/a24d5f2ac8ef702a58e55ec276aad29b4bd97e05","https://git.kernel.org/stable/c/c2dc077d8f722a1c73a24e674f925602ee5ece49","https://git.kernel.org/stable/c/653bc5e6d9995d7d5f497c665b321875a626161c","https://git.kernel.org/stable/c/b93a6756a01f4fd2f329a39216f9824c56a66397","https://git.kernel.org/stable/c/970709a67696b100a57b33af1a3d75fc34b747eb","https://git.kernel.org/stable/c/97f7cf1cd80eeed3b7c808b7c12463295c751001","https://lists.debian.org/debian-lts-announce/2024/06/msg00017.html"],"weaknesses":[],"ingestedAt":"2026-10-29T20:07:10.607Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2024/26xxx/CVE-2024-26910.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2024-26910","state":"PUBLISHED","datePublished":"2024-04-17T15:59:21.967Z","dateUpdated":"2026-05-23T15:39:51.569Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2024-02-19T14:20:24.188Z"},"containers":{"cna":{"title":"netfilter: ipset: fix performance regression in swap operation","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnetfilter: ipset: fix performance regression in swap operation\n\nThe patch \"netfilter: ipset: fix race condition between swap/destroy\nand kernel side add/del/test\", commit 28628fa9 fixes a race condition.\nBut the synchronize_rcu() added to the swap function unnecessarily slows\nit down: it can safely be moved to destroy and use call_rcu() instead.\n\nEric Dumazet pointed out that simply calling the destroy functions as\nrcu callback does not work: sets with timeout use garbage collectors\nwhich need cancelling at destroy which can wait. Therefore the destroy\nfunctions are split into two: cancelling garbage collectors safely at\nexecuting the command received by netlink and moving the remaining\npart only into the rcu callback."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"427deb5ba5661c4ae1cfb35955d2e01bd5f3090a","status":"affected","lessThan":"c7f2733e5011bfd136f1ca93497394d43aa76225","versionType":"git"},{"version":"e7152a138a5ac77439ff4e7a7533448a7d4c260d","status":"affected","lessThan":"a24d5f2ac8ef702a58e55ec276aad29b4bd97e05","versionType":"git"},{"version":"8bb930c3a1eacec1b14817f565ff81667c7c5dfa","status":"affected","lessThan":"c2dc077d8f722a1c73a24e674f925602ee5ece49","versionType":"git"},{"version":"875ee3a09e27b7adb7006ca6d16faf7f33415aa5","status":"affected","lessThan":"653bc5e6d9995d7d5f497c665b321875a626161c","versionType":"git"},{"version":"23c31036f862582f98386120aee55c9ae23d7899","status":"affected","lessThan":"b93a6756a01f4fd2f329a39216f9824c56a66397","versionType":"git"},{"version":"28628fa952fefc7f2072ce6e8016968cc452b1ba","status":"affected","lessThan":"970709a67696b100a57b33af1a3d75fc34b747eb","versionType":"git"},{"version":"28628fa952fefc7f2072ce6e8016968cc452b1ba","status":"affected","lessThan":"97f7cf1cd80eeed3b7c808b7c12463295c751001","versionType":"git"},{"version":"a12606e5ad0cee8f4ba3ec68561c4d6275d2df57","status":"affected","versionType":"git"},{"version":"5.4.264","status":"affected","lessThan":"5.4.269","versionType":"semver"},{"version":"5.10.204","status":"affected","lessThan":"5.10.210","versionType":"semver"},{"version":"5.15.143","status":"affected","lessThan":"5.15.149","versionType":"semver"},{"version":"6.1.68","status":"affected","lessThan":"6.1.79","versionType":"semver"},{"version":"6.6.7","status":"affected","lessThan":"6.6.18","versionType":"semver"},{"version":"4.19.302","status":"affected","lessThan":"4.20","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["include/linux/netfilter/ipset/ip_set.h","net/netfilter/ipset/ip_set_bitmap_gen.h","net/netfilter/ipset/ip_set_core.c","net/netfilter/ipset/ip_set_hash_gen.h","net/netfilter/ipset/ip_set_list_set.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.7","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.7","versionType":"semver"},{"version":"5.4.269","status":"unaffected","lessThanOrEqual":"5.4.*","versionType":"semver"},{"version":"5.10.210","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.149","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.79","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.18","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.7.6","status":"unaffected","lessThanOrEqual":"6.7.*","versionType":"semver"},{"version":"6.8","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["include/linux/netfilter/ipset/ip_set.h","net/netfilter/ipset/ip_set_bitmap_gen.h","net/netfilter/ipset/ip_set_core.c","net/netfilter/ipset/ip_set_hash_gen.h","net/netfilter/ipset/ip_set_list_set.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/c7f2733e5011bfd136f1ca93497394d43aa76225"},{"url":"https://git.kernel.org/stable/c/a24d5f2ac8ef702a58e55ec276aad29b4bd97e05"},{"url":"https://git.kernel.org/stable/c/c2dc077d8f722a1c73a24e674f925602ee5ece49"},{"url":"https://git.kernel.org/stable/c/653bc5e6d9995d7d5f497c665b321875a626161c"},{"url":"https://git.kernel.org/stable/c/b93a6756a01f4fd2f329a39216f9824c56a66397"},{"url":"https://git.kernel.org/stable/c/970709a67696b100a57b33af1a3d75fc34b747eb"},{"url":"https://git.kernel.org/stable/c/97f7cf1cd80eeed3b7c808b7c12463295c751001"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-05-23T15:39:51.569Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.4.264","versionEndExcluding":"5.4.269"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10.204","versionEndExcluding":"5.10.210"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.15.143","versionEndExcluding":"5.15.149"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.1.68","versionEndExcluding":"6.1.79"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.6.7","versionEndExcluding":"6.6.18"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.7","versionEndExcluding":"6.7.6"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.7","versionEndExcluding":"6.8"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.19.302"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2024-26910","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"version":"2.0.3","timestamp":"2024-04-23T14:01:29.284146Z"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2024-06-04T17:48:39.956Z"}},{"title":"CVE Program Container","references":[{"url":"https://git.kernel.org/stable/c/c7f2733e5011bfd136f1ca93497394d43aa76225","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/a24d5f2ac8ef702a58e55ec276aad29b4bd97e05","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/c2dc077d8f722a1c73a24e674f925602ee5ece49","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/653bc5e6d9995d7d5f497c665b321875a626161c","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/b93a6756a01f4fd2f329a39216f9824c56a66397","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/970709a67696b100a57b33af1a3d75fc34b747eb","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/97f7cf1cd80eeed3b7c808b7c12463295c751001","tags":["x_transferred"]},{"url":"https://lists.debian.org/debian-lts-announce/2024/06/msg00017.html","tags":["x_transferred"]}],"providerMetadata":{"shortName":"CVE","orgId":"af854a3a-2127-422b-91ae-364da2661108","dateUpdated":"2024-08-02T00:21:05.455Z"}}]}}}