Commit 7d367e0
netfilter: ctnetlink: fix soft lockup when netlink adds new entries (v2)
Marcell Zambo and Janos Farago noticed and reported that when
new conntrack entries are added via netlink and the conntrack table
gets full, soft lockup happens. This is because the nf_conntrack_lock
is held while nf_conntrack_alloc is called, which is in turn wants
to lock nf_conntrack_lock while evicting entries from the full table.
The patch fixes the soft lockup with limiting the holding of the
nf_conntrack_lock to the minimum, where it's absolutely required.
It required to extend (and thus change) nf_conntrack_hash_insert
so that it makes sure conntrack and ctnetlink do not add the same entry
twice to the conntrack table.
Signed-off-by: Jozsef Kadlecsik <[email protected]>
Signed-off-by: Pablo Neira Ayuso <[email protected]>1 parent 2790728 commit 7d367e0
File tree
3 files changed
+51
-35
lines changed- include/net/netfilter
- net/netfilter
3 files changed
+51
-35
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
209 | 209 | | |
210 | 210 | | |
211 | 211 | | |
212 | | - | |
| 212 | + | |
213 | 213 | | |
214 | 214 | | |
215 | 215 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
404 | 404 | | |
405 | 405 | | |
406 | 406 | | |
407 | | - | |
| 407 | + | |
| 408 | + | |
408 | 409 | | |
409 | 410 | | |
410 | 411 | | |
| 412 | + | |
| 413 | + | |
411 | 414 | | |
412 | 415 | | |
413 | 416 | | |
414 | | - | |
415 | | - | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
416 | 423 | | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
417 | 438 | | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
418 | 448 | | |
419 | | - | |
| 449 | + | |
420 | 450 | | |
421 | 451 | | |
422 | 452 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1367 | 1367 | | |
1368 | 1368 | | |
1369 | 1369 | | |
1370 | | - | |
1371 | 1370 | | |
1372 | 1371 | | |
1373 | | - | |
1374 | 1372 | | |
1375 | 1373 | | |
1376 | 1374 | | |
1377 | 1375 | | |
1378 | | - | |
1379 | 1376 | | |
1380 | 1377 | | |
1381 | 1378 | | |
| |||
1468 | 1465 | | |
1469 | 1466 | | |
1470 | 1467 | | |
1471 | | - | |
1472 | | - | |
| 1468 | + | |
| 1469 | + | |
| 1470 | + | |
| 1471 | + | |
1473 | 1472 | | |
1474 | 1473 | | |
1475 | 1474 | | |
| |||
1490 | 1489 | | |
1491 | 1490 | | |
1492 | 1491 | | |
| 1492 | + | |
1493 | 1493 | | |
1494 | 1494 | | |
1495 | 1495 | | |
| |||
1510 | 1510 | | |
1511 | 1511 | | |
1512 | 1512 | | |
1513 | | - | |
1514 | 1513 | | |
1515 | | - | |
| 1514 | + | |
1516 | 1515 | | |
1517 | | - | |
| 1516 | + | |
1518 | 1517 | | |
1519 | 1518 | | |
1520 | 1519 | | |
1521 | 1520 | | |
1522 | | - | |
1523 | 1521 | | |
1524 | 1522 | | |
1525 | 1523 | | |
1526 | 1524 | | |
1527 | | - | |
1528 | | - | |
1529 | | - | |
1530 | | - | |
| 1525 | + | |
| 1526 | + | |
| 1527 | + | |
1531 | 1528 | | |
1532 | | - | |
1533 | | - | |
1534 | 1529 | | |
1535 | 1530 | | |
1536 | 1531 | | |
| |||
1545 | 1540 | | |
1546 | 1541 | | |
1547 | 1542 | | |
1548 | | - | |
1549 | | - | |
| 1543 | + | |
1550 | 1544 | | |
1551 | 1545 | | |
1552 | 1546 | | |
1553 | 1547 | | |
1554 | 1548 | | |
1555 | | - | |
1556 | | - | |
1557 | 1549 | | |
| 1550 | + | |
1558 | 1551 | | |
1559 | | - | |
1560 | | - | |
| 1552 | + | |
1561 | 1553 | | |
| 1554 | + | |
1562 | 1555 | | |
1563 | | - | |
1564 | | - | |
1565 | 1556 | | |
1566 | 1557 | | |
1567 | 1558 | | |
| |||
1570 | 1561 | | |
1571 | 1562 | | |
1572 | 1563 | | |
1573 | | - | |
1574 | | - | |
1575 | | - | |
1576 | | - | |
1577 | | - | |
| 1564 | + | |
1578 | 1565 | | |
1579 | 1566 | | |
1580 | | - | |
1581 | | - | |
| 1567 | + | |
1582 | 1568 | | |
1583 | 1569 | | |
1584 | 1570 | | |
| |||
0 commit comments