diff options
| author | OGAWA Hirofumi <[email protected]> | 2015-11-20 23:57:15 +0000 |
|---|---|---|
| committer | Linus Torvalds <[email protected]> | 2015-11-21 00:17:32 +0000 |
| commit | 928a477102c4fc6739883415b66987207e3502f4 (patch) | |
| tree | 1b38ac8017f2427750f11806437271634177b6f8 /drivers/fpga/fpga-mgr.c | |
| parent | mm/hugetlbfs: fix bugs in fallocate hole punch of areas with holes (diff) | |
| download | kernel-928a477102c4fc6739883415b66987207e3502f4.tar.gz kernel-928a477102c4fc6739883415b66987207e3502f4.zip | |
fat: fix fake_offset handling on error path
For the root directory, . and .. are faked (using dir_emit_dots()) and
ctx->pos is reset from 2 to 0.
A corrupted root directory could cause fat_get_entry() to fail, but
->iterate() (fat_readdir()) reports progress to the VFS (with ctx->pos
rewound to 0), so any following calls to ->iterate() continue to return
the same entries again and again.
The result is that userspace will never see the end of the directory,
causing e.g. 'ls' to hang in a getdents() loop.
[[email protected]: cleanup and make sure to correct fake_offset]
Reported-by: Vegard Nossum <[email protected]>
Tested-by: Vegard Nossum <[email protected]>
Signed-off-by: Richard Weinberger <[email protected]>
Signed-off-by: OGAWA Hirofumi <[email protected]>
Cc: <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'drivers/fpga/fpga-mgr.c')
0 files changed, 0 insertions, 0 deletions
