diff options
author | Amir Goldstein <amir73il@gmail.com> | 2023-08-16 12:42:18 +0300 |
---|---|---|
committer | Amir Goldstein <amir73il@gmail.com> | 2023-10-31 00:12:57 +0200 |
commit | c63e56a4a6523fcb1358e1878607d77a40b534bb (patch) | |
tree | 2c8b9e0f4c23495df940722abfb6eaf1133ad482 /drivers/tty/serial/esp32_acm.c | |
parent | 162d06444070c12827d604a2cb6b6bd98d48cbb0 (diff) |
ovl: do not open/llseek lower file with upper sb_writers held
overlayfs file open (ovl_maybe_lookup_lowerdata) and overlay file llseek
take the ovl_inode_lock, without holding upper sb_writers.
In case of nested lower overlay that uses same upper fs as this overlay,
lockdep will warn about (possibly false positive) circular lock
dependency when doing open/llseek of lower ovl file during copy up with
our upper sb_writers held, because the locking ordering seems reverse to
the locking order in ovl_copy_up_start():
- lower ovl_inode_lock
- upper sb_writers
Let the copy up "transaction" keeps an elevated mnt write count on upper
mnt, but leaves taking upper sb_writers to lower level helpers only when
they actually need it. This allows to avoid holding upper sb_writers
during lower file open/llseek and prevents the lockdep warning.
Minimizing the scope of upper sb_writers during copy up is also needed
for fixing another possible deadlocks by a following patch.
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Diffstat (limited to 'drivers/tty/serial/esp32_acm.c')
0 files changed, 0 insertions, 0 deletions