Commit 59c7df6
deps: uvwasi: cherry-pick c3bef8e
Original commit message:
prevent locking fd table while holding a mutex
uvwasi_path_rename(), uvwasi_path_link(),
uvwasi_path_open(), and uvwasi_fd_renumber() operate
on multiple file descriptors. uvwasi_fd_renumber() has
been updated prior to this commit, and is not relevant
here. The other three functions would perform the
following locking operations:
- lock the file table
- acquire a file descriptor mutex
- unlock the file table
- unlock the file table again
- acquire another file descriptor mutex
- unlock the file table
- unlock the two mutexes
Attempting to acquire the second mutex introduced
the possibility of deadlock because another thread
could attempt to acquire the first mutex while
holding the file table lock.
This commit ensures that multiple mutexes are either:
- acquired in a single lock of the file table
- or, only acquired after releasing previously held mutexes
Fixes: nodejs/uvwasi#89
PR-URL: #31432
Reviewed-By: Tobias Nießen <[email protected]>
Reviewed-By: Ben Noordhuis <[email protected]>
Reviewed-By: David Carlier <[email protected]>
Reviewed-By: Rich Trott <[email protected]>
Reviewed-By: Jiawen Geng <[email protected]>1 parent edf7d69 commit 59c7df6
3 files changed
+113
-69
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
49 | | - | |
| 49 | + | |
50 | 50 | | |
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
54 | 59 | | |
55 | 60 | | |
56 | 61 | | |
57 | 62 | | |
58 | 63 | | |
59 | 64 | | |
60 | 65 | | |
| 66 | + | |
| 67 | + | |
61 | 68 | | |
62 | 69 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
252 | 252 | | |
253 | 253 | | |
254 | 254 | | |
255 | | - | |
| 255 | + | |
256 | 256 | | |
257 | 257 | | |
258 | 258 | | |
259 | 259 | | |
260 | | - | |
261 | 260 | | |
262 | 261 | | |
263 | | - | |
| 262 | + | |
264 | 263 | | |
265 | 264 | | |
266 | | - | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
267 | 274 | | |
268 | | - | |
269 | | - | |
270 | | - | |
271 | | - | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
272 | 291 | | |
273 | 292 | | |
274 | 293 | | |
275 | | - | |
276 | | - | |
277 | | - | |
278 | | - | |
| 294 | + | |
| 295 | + | |
279 | 296 | | |
280 | 297 | | |
281 | 298 | | |
282 | 299 | | |
283 | | - | |
284 | | - | |
| 300 | + | |
285 | 301 | | |
286 | 302 | | |
287 | 303 | | |
288 | 304 | | |
289 | | - | |
290 | | - | |
291 | | - | |
292 | | - | |
| 305 | + | |
293 | 306 | | |
294 | 307 | | |
295 | 308 | | |
| |||
389 | 402 | | |
390 | 403 | | |
391 | 404 | | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1763 | 1763 | | |
1764 | 1764 | | |
1765 | 1765 | | |
1766 | | - | |
1767 | | - | |
1768 | | - | |
1769 | | - | |
1770 | | - | |
1771 | | - | |
1772 | | - | |
1773 | | - | |
1774 | | - | |
| 1766 | + | |
1775 | 1767 | | |
| 1768 | + | |
| 1769 | + | |
| 1770 | + | |
| 1771 | + | |
| 1772 | + | |
| 1773 | + | |
| 1774 | + | |
1776 | 1775 | | |
1777 | 1776 | | |
1778 | | - | |
1779 | | - | |
1780 | | - | |
1781 | | - | |
1782 | | - | |
1783 | | - | |
1784 | | - | |
1785 | | - | |
1786 | | - | |
1787 | | - | |
1788 | | - | |
1789 | | - | |
1790 | | - | |
| 1777 | + | |
| 1778 | + | |
| 1779 | + | |
| 1780 | + | |
| 1781 | + | |
1791 | 1782 | | |
1792 | | - | |
| 1783 | + | |
1793 | 1784 | | |
1794 | 1785 | | |
| 1786 | + | |
| 1787 | + | |
| 1788 | + | |
| 1789 | + | |
| 1790 | + | |
| 1791 | + | |
| 1792 | + | |
| 1793 | + | |
1795 | 1794 | | |
1796 | 1795 | | |
| 1796 | + | |
| 1797 | + | |
| 1798 | + | |
| 1799 | + | |
| 1800 | + | |
1797 | 1801 | | |
1798 | 1802 | | |
1799 | 1803 | | |
| |||
1922 | 1926 | | |
1923 | 1927 | | |
1924 | 1928 | | |
| 1929 | + | |
1925 | 1930 | | |
1926 | 1931 | | |
1927 | | - | |
1928 | | - | |
| 1932 | + | |
1929 | 1933 | | |
1930 | | - | |
1931 | 1934 | | |
1932 | 1935 | | |
1933 | 1936 | | |
| |||
1960 | 1963 | | |
1961 | 1964 | | |
1962 | 1965 | | |
1963 | | - | |
1964 | 1966 | | |
1965 | 1967 | | |
1966 | 1968 | | |
1967 | | - | |
1968 | 1969 | | |
1969 | 1970 | | |
1970 | 1971 | | |
| |||
2079 | 2080 | | |
2080 | 2081 | | |
2081 | 2082 | | |
| 2083 | + | |
| 2084 | + | |
2082 | 2085 | | |
2083 | | - | |
2084 | | - | |
2085 | | - | |
2086 | | - | |
2087 | | - | |
2088 | | - | |
2089 | | - | |
2090 | | - | |
| 2086 | + | |
| 2087 | + | |
| 2088 | + | |
| 2089 | + | |
| 2090 | + | |
| 2091 | + | |
2091 | 2092 | | |
2092 | 2093 | | |
2093 | | - | |
2094 | | - | |
2095 | | - | |
2096 | | - | |
2097 | | - | |
2098 | | - | |
2099 | | - | |
2100 | | - | |
2101 | | - | |
2102 | | - | |
2103 | | - | |
2104 | | - | |
2105 | | - | |
| 2094 | + | |
| 2095 | + | |
| 2096 | + | |
| 2097 | + | |
| 2098 | + | |
2106 | 2099 | | |
2107 | | - | |
| 2100 | + | |
2108 | 2101 | | |
2109 | 2102 | | |
| 2103 | + | |
| 2104 | + | |
| 2105 | + | |
| 2106 | + | |
| 2107 | + | |
| 2108 | + | |
| 2109 | + | |
| 2110 | + | |
2110 | 2111 | | |
2111 | 2112 | | |
| 2113 | + | |
| 2114 | + | |
| 2115 | + | |
| 2116 | + | |
| 2117 | + | |
2112 | 2118 | | |
2113 | 2119 | | |
2114 | 2120 | | |
| |||
0 commit comments