diff options
author | Joern Engel <joern@logfs.org> | 2010-03-17 16:00:07 +0100 |
---|---|---|
committer | Joern Engel <joern@logfs.org> | 2010-03-27 11:19:15 +0100 |
commit | e326068806ee044cc617b1dc24be1293fca3fbf6 (patch) | |
tree | d82ee6e4b4d885a068bf35f2b29fd83a58e082e2 /fs | |
parent | e07bf553f37cd4fa470b499ff34d800956df2d48 (diff) | |
download | linux-e326068806ee044cc617b1dc24be1293fca3fbf6.tar.gz linux-e326068806ee044cc617b1dc24be1293fca3fbf6.tar.bz2 linux-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')
-rw-r--r-- | fs/logfs/dir.c | 4 |
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; |