Commit 08de00a
authored
Thread Safety Analysis: Fix recursive capability alias resolution (#159921)
Fix a false positive in thread safety alias analysis caused by incorrect
late resolution of aliases. The analysis previously failed to
distinguish between an alias and its defining expression; reassigning a
variable within that expression (e.g., `ptr` in `alias = ptr->field`)
would incorrectly change the dependent alias as well.
The fix is to properly use LocalVariableMap::lookupExpr's updated
context in a recursive lookup.
Reported-by: Christoph Hellwig <[email protected]>
Link: https://lkml.kernel.org/r/[email protected]1 parent 242a1e2 commit 08de00a
File tree
4 files changed
+57
-24
lines changed- clang
- include/clang/Analysis/Analyses
- lib/Analysis
- test/SemaCXX
4 files changed
+57
-24
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
543 | 543 | | |
544 | 544 | | |
545 | 545 | | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
546 | 550 | | |
547 | 551 | | |
548 | 552 | | |
549 | | - | |
| 553 | + | |
550 | 554 | | |
551 | 555 | | |
552 | 556 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1668 | 1668 | | |
1669 | 1669 | | |
1670 | 1670 | | |
1671 | | - | |
1672 | | - | |
1673 | | - | |
1674 | | - | |
1675 | | - | |
1676 | | - | |
1677 | | - | |
| 1671 | + | |
| 1672 | + | |
| 1673 | + | |
| 1674 | + | |
| 1675 | + | |
| 1676 | + | |
| 1677 | + | |
1678 | 1678 | | |
1679 | 1679 | | |
1680 | 1680 | | |
| |||
1722 | 1722 | | |
1723 | 1723 | | |
1724 | 1724 | | |
| 1725 | + | |
| 1726 | + | |
| 1727 | + | |
| 1728 | + | |
| 1729 | + | |
| 1730 | + | |
| 1731 | + | |
| 1732 | + | |
| 1733 | + | |
| 1734 | + | |
| 1735 | + | |
| 1736 | + | |
| 1737 | + | |
1725 | 1738 | | |
1726 | 1739 | | |
1727 | 1740 | | |
| |||
1747 | 1760 | | |
1748 | 1761 | | |
1749 | 1762 | | |
1750 | | - | |
1751 | | - | |
1752 | | - | |
1753 | | - | |
1754 | | - | |
1755 | | - | |
1756 | | - | |
| 1763 | + | |
1757 | 1764 | | |
1758 | 1765 | | |
1759 | 1766 | | |
| |||
2259 | 2266 | | |
2260 | 2267 | | |
2261 | 2268 | | |
2262 | | - | |
2263 | | - | |
2264 | | - | |
| 2269 | + | |
2265 | 2270 | | |
2266 | 2271 | | |
2267 | 2272 | | |
| |||
2307 | 2312 | | |
2308 | 2313 | | |
2309 | 2314 | | |
2310 | | - | |
2311 | | - | |
| 2315 | + | |
2312 | 2316 | | |
2313 | 2317 | | |
2314 | 2318 | | |
| |||
2404 | 2408 | | |
2405 | 2409 | | |
2406 | 2410 | | |
2407 | | - | |
2408 | | - | |
| 2411 | + | |
2409 | 2412 | | |
2410 | 2413 | | |
2411 | 2414 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
248 | 248 | | |
249 | 249 | | |
250 | 250 | | |
251 | | - | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
252 | 254 | | |
253 | | - | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
254 | 262 | | |
255 | 263 | | |
256 | 264 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7463 | 7463 | | |
7464 | 7464 | | |
7465 | 7465 | | |
| 7466 | + | |
7466 | 7467 | | |
7467 | 7468 | | |
7468 | 7469 | | |
| |||
7472 | 7473 | | |
7473 | 7474 | | |
7474 | 7475 | | |
| 7476 | + | |
| 7477 | + | |
| 7478 | + | |
| 7479 | + | |
| 7480 | + | |
| 7481 | + | |
| 7482 | + | |
| 7483 | + | |
| 7484 | + | |
| 7485 | + | |
| 7486 | + | |
| 7487 | + | |
| 7488 | + | |
| 7489 | + | |
| 7490 | + | |
| 7491 | + | |
| 7492 | + | |
7475 | 7493 | | |
7476 | 7494 | | |
7477 | 7495 | | |
| |||
0 commit comments