Commit 4957d56
epoll: Keep a reference on files added to the check list
commit a9ed4a6 upstream.
When adding a new fd to an epoll, and that this new fd is an
epoll fd itself, we recursively scan the fds attached to it
to detect cycles, and add non-epool files to a "check list"
that gets subsequently parsed.
However, this check list isn't completely safe when deletions
can happen concurrently. To sidestep the issue, make sure that
a struct file placed on the check list sees its f_count increased,
ensuring that a concurrent deletion won't result in the file
disapearing from under our feet.
Cc: [email protected]
Signed-off-by: Marc Zyngier <[email protected]>
Signed-off-by: Al Viro <[email protected]>
Signed-off-by: Marc Zyngier <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>1 parent 2ff3c97 commit 4957d56
1 file changed
+7
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1890 | 1890 | | |
1891 | 1891 | | |
1892 | 1892 | | |
1893 | | - | |
| 1893 | + | |
| 1894 | + | |
1894 | 1895 | | |
1895 | 1896 | | |
| 1897 | + | |
1896 | 1898 | | |
1897 | 1899 | | |
1898 | 1900 | | |
| |||
1936 | 1938 | | |
1937 | 1939 | | |
1938 | 1940 | | |
| 1941 | + | |
1939 | 1942 | | |
1940 | 1943 | | |
1941 | 1944 | | |
| |||
2095 | 2098 | | |
2096 | 2099 | | |
2097 | 2100 | | |
2098 | | - | |
| 2101 | + | |
| 2102 | + | |
2099 | 2103 | | |
2100 | 2104 | | |
| 2105 | + | |
2101 | 2106 | | |
2102 | 2107 | | |
2103 | 2108 | | |
| |||
0 commit comments