ldm: corrupted partition table can cause kernel oops
The kernel automatically evaluates partition tables of storage devices. The code for evaluating LDM partitions (in fs/partitions/ldm.c) contains a bug that causes a kernel oops on certain corrupted LDM partitions. A kernel subsystem seems to crash, because, after the oops, the kernel no longer recognizes newly connected storage devices. The patch changes ldm_parse_vmdb() to Validate the value of vblk_size. Signed-off-by: Timo Warns <warns@pre-sense.de> Cc: Eugene Teo <eugeneteo@kernel.sg> Acked-by: Richard Russon <ldm@flatcap.org> Cc: Harvey Harrison <harvey.harrison@gmail.com> Cc: <stable@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
2876592f23
commit
294f6cf486
1 changed files with 5 additions and 0 deletions
|
@ -251,6 +251,11 @@ static bool ldm_parse_vmdb (const u8 *data, struct vmdb *vm)
|
|||
}
|
||||
|
||||
vm->vblk_size = get_unaligned_be32(data + 0x08);
|
||||
if (vm->vblk_size == 0) {
|
||||
ldm_error ("Illegal VBLK size");
|
||||
return false;
|
||||
}
|
||||
|
||||
vm->vblk_offset = get_unaligned_be32(data + 0x0C);
|
||||
vm->last_vblk_seq = get_unaligned_be32(data + 0x04);
|
||||
|
||||
|
|
Loading…
Reference in a new issue