summaryrefslogtreecommitdiffstats
path: root/fs/logfs/dir.c
diff options
context:
space:
mode:
authorJoern Engel <joern@logfs.org>2010-03-17 16:00:07 +0100
committerJoern Engel <joern@logfs.org>2010-03-27 11:19:15 +0100
commite326068806ee044cc617b1dc24be1293fca3fbf6 (patch)
treed82ee6e4b4d885a068bf35f2b29fd83a58e082e2 /fs/logfs/dir.c
parente07bf553f37cd4fa470b499ff34d800956df2d48 (diff)
downloadlinux-stable-e326068806ee044cc617b1dc24be1293fca3fbf6.tar.gz
linux-stable-e326068806ee044cc617b1dc24be1293fca3fbf6.tar.bz2
linux-stable-e326068806ee044cc617b1dc24be1293fca3fbf6.zip
Prevent schedule while atomic in __logfs_readdir
Apparently filldir can sleep, which forbids kmap_atomic. Signed-off-by: Joern Engel <joern@logfs.org>
Diffstat (limited to 'fs/logfs/dir.c')
-rw-r--r--fs/logfs/dir.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/logfs/dir.c b/fs/logfs/dir.c
index 56a8bfbb0120..c76b4b5c7ff6 100644
--- a/fs/logfs/dir.c
+++ b/fs/logfs/dir.c
@@ -303,12 +303,12 @@ static int __logfs_readdir(struct file *file, void *buf, filldir_t filldir)
(filler_t *)logfs_readpage, NULL);
if (IS_ERR(page))
return PTR_ERR(page);
- dd = kmap_atomic(page, KM_USER0);
+ dd = kmap(page);
BUG_ON(dd->namelen == 0);
full = filldir(buf, (char *)dd->name, be16_to_cpu(dd->namelen),
pos, be64_to_cpu(dd->ino), dd->type);
- kunmap_atomic(dd, KM_USER0);
+ kunmap(page);
page_cache_release(page);
if (full)
break;