diff options
Diffstat (limited to 'fs/partitions/efi.c')
-rw-r--r-- | fs/partitions/efi.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/partitions/efi.c b/fs/partitions/efi.c index 80eeff5fdfe0..49cfd5f54238 100644 --- a/fs/partitions/efi.c +++ b/fs/partitions/efi.c | |||
@@ -262,15 +262,16 @@ static gpt_header * | |||
262 | alloc_read_gpt_header(struct block_device *bdev, u64 lba) | 262 | alloc_read_gpt_header(struct block_device *bdev, u64 lba) |
263 | { | 263 | { |
264 | gpt_header *gpt; | 264 | gpt_header *gpt; |
265 | unsigned ssz = bdev_logical_block_size(bdev); | ||
266 | |||
265 | if (!bdev) | 267 | if (!bdev) |
266 | return NULL; | 268 | return NULL; |
267 | 269 | ||
268 | gpt = kzalloc(sizeof (gpt_header), GFP_KERNEL); | 270 | gpt = kzalloc(ssz, GFP_KERNEL); |
269 | if (!gpt) | 271 | if (!gpt) |
270 | return NULL; | 272 | return NULL; |
271 | 273 | ||
272 | if (read_lba(bdev, lba, (u8 *) gpt, | 274 | if (read_lba(bdev, lba, (u8 *) gpt, ssz) < ssz) { |
273 | sizeof (gpt_header)) < sizeof (gpt_header)) { | ||
274 | kfree(gpt); | 275 | kfree(gpt); |
275 | gpt=NULL; | 276 | gpt=NULL; |
276 | return NULL; | 277 | return NULL; |