block: sanitize invalid partition table entries

Previous thread: fs/partitions/acorn.c: remove dead code by Linux Kernel Mailing List on Thursday, October 16, 2008 - 12:09 pm. (1 message)

Next thread: proc: move sysrq-trigger out of fs/proc/ by Linux Kernel Mailing List on Thursday, October 16, 2008 - 12:09 pm. (1 message)
From: Linux Kernel Mailing List
Date: Thursday, October 16, 2008 - 12:09 pm

Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ac0d86...
Commit:     ac0d86f5809598ddcd6bfa0ea8245ccc910e9eac
Parent:     6722e45c2de622eaf5f26d370b9de19632ac7478
Author:     Kay Sievers <kay.sievers@vrfy.org>
AuthorDate: Wed Oct 15 22:04:21 2008 -0700
Committer:  Linus Torvalds <torvalds@linux-foundation.org>
CommitDate: Thu Oct 16 11:21:47 2008 -0700

    block: sanitize invalid partition table entries
    
    We currently follow blindly what the partition table lies about the
    disk, and let the kernel create block devices which can not be accessed.
    Trying to identify the device leads to kernel logs full of:
      sdb: rw=0, want=73392, limit=28800
      attempt to access beyond end of device
    
    Here is an example of a broken partition table, where sda2 starts
    behind the end of the disk, and sdb3 is larger than the entire disk:
      Disk /dev/sdb: 14 MB, 14745600 bytes
      1 heads, 29 sectors/track, 993 cylinders, total 28800 sectors
         Device Boot      Start         End      Blocks   Id  System
      /dev/sdb1              29        7800        3886   83  Linux
      /dev/sdb2           37801       45601        3900+  83  Linux
      /dev/sdb3           15602       73402       28900+  83  Linux
      /dev/sdb4           23403       28796        2697   83  Linux
    
    The kernel creates these completely invalid devices, which can not be
    accessed, or may lead to other unpredictable failures:
      grep . /sys/class/block/sdb*/{start,size}
      /sys/class/block/sdb/size:28800
      /sys/class/block/sdb1/start:29
      /sys/class/block/sdb1/size:7772
      /sys/class/block/sdb2/start:37801
      /sys/class/block/sdb2/size:7801
      /sys/class/block/sdb3/start:15602
      /sys/class/block/sdb3/size:57801
      /sys/class/block/sdb4/start:23403
      /sys/class/block/sdb4/size:5394
    
    With this patch, we ignore partitions which start behind the end of the ...
Previous thread: fs/partitions/acorn.c: remove dead code by Linux Kernel Mailing List on Thursday, October 16, 2008 - 12:09 pm. (1 message)

Next thread: proc: move sysrq-trigger out of fs/proc/ by Linux Kernel Mailing List on Thursday, October 16, 2008 - 12:09 pm. (1 message)