diff options
Diffstat (limited to 'fs/hfsplus')
-rw-r--r-- | fs/hfsplus/bitmap.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/fs/hfsplus/bitmap.c b/fs/hfsplus/bitmap.c index d128a25b74d2..ea30afc2a03c 100644 --- a/fs/hfsplus/bitmap.c +++ b/fs/hfsplus/bitmap.c | |||
@@ -32,6 +32,10 @@ int hfsplus_block_allocate(struct super_block *sb, u32 size, u32 offset, u32 *ma | |||
32 | mutex_lock(&HFSPLUS_SB(sb).alloc_file->i_mutex); | 32 | mutex_lock(&HFSPLUS_SB(sb).alloc_file->i_mutex); |
33 | mapping = HFSPLUS_SB(sb).alloc_file->i_mapping; | 33 | mapping = HFSPLUS_SB(sb).alloc_file->i_mapping; |
34 | page = read_mapping_page(mapping, offset / PAGE_CACHE_BITS, NULL); | 34 | page = read_mapping_page(mapping, offset / PAGE_CACHE_BITS, NULL); |
35 | if (IS_ERR(page)) { | ||
36 | start = size; | ||
37 | goto out; | ||
38 | } | ||
35 | pptr = kmap(page); | 39 | pptr = kmap(page); |
36 | curr = pptr + (offset & (PAGE_CACHE_BITS - 1)) / 32; | 40 | curr = pptr + (offset & (PAGE_CACHE_BITS - 1)) / 32; |
37 | i = offset % 32; | 41 | i = offset % 32; |
@@ -73,6 +77,10 @@ int hfsplus_block_allocate(struct super_block *sb, u32 size, u32 offset, u32 *ma | |||
73 | break; | 77 | break; |
74 | page = read_mapping_page(mapping, offset / PAGE_CACHE_BITS, | 78 | page = read_mapping_page(mapping, offset / PAGE_CACHE_BITS, |
75 | NULL); | 79 | NULL); |
80 | if (IS_ERR(page)) { | ||
81 | start = size; | ||
82 | goto out; | ||
83 | } | ||
76 | curr = pptr = kmap(page); | 84 | curr = pptr = kmap(page); |
77 | if ((size ^ offset) / PAGE_CACHE_BITS) | 85 | if ((size ^ offset) / PAGE_CACHE_BITS) |
78 | end = pptr + PAGE_CACHE_BITS / 32; | 86 | end = pptr + PAGE_CACHE_BITS / 32; |
@@ -120,6 +128,10 @@ found: | |||
120 | offset += PAGE_CACHE_BITS; | 128 | offset += PAGE_CACHE_BITS; |
121 | page = read_mapping_page(mapping, offset / PAGE_CACHE_BITS, | 129 | page = read_mapping_page(mapping, offset / PAGE_CACHE_BITS, |
122 | NULL); | 130 | NULL); |
131 | if (IS_ERR(page)) { | ||
132 | start = size; | ||
133 | goto out; | ||
134 | } | ||
123 | pptr = kmap(page); | 135 | pptr = kmap(page); |
124 | curr = pptr; | 136 | curr = pptr; |
125 | end = pptr + PAGE_CACHE_BITS / 32; | 137 | end = pptr + PAGE_CACHE_BITS / 32; |