OSDN Git Service

dm: Check for device sector overflow if CONFIG_LBDAF is not set
authorMilan Broz <gmazyland@gmail.com>
Wed, 7 Nov 2018 21:24:55 +0000 (22:24 +0100)
committerMike Snitzer <snitzer@redhat.com>
Tue, 18 Dec 2018 14:02:26 +0000 (09:02 -0500)
commitef87bfc24f9b8da82c89aff493df20f078bc9cb1
tree9f0f98dbf82d895699bcf1036b326df2ac6d464f
parent8d683dcd65c037efc9fb38c696ec9b65b306e573
dm: Check for device sector overflow if CONFIG_LBDAF is not set

Reference to a device in device-mapper table contains offset in sectors.

If the sector_t is 32bit integer (CONFIG_LBDAF is not set), then
several device-mapper targets can overflow this offset and validity
check is then performed on a wrong offset and a wrong table is activated.

See for example (on 32bit without CONFIG_LBDAF) this overflow:

  # dmsetup create test --table "0 2048 linear /dev/sdg 4294967297"
  # dmsetup table test
  0 2048 linear 8:96 1

This patch adds explicit check for overflow if the offset is sector_t type.

Signed-off-by: Milan Broz <gmazyland@gmail.com>
Reviewed-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-crypt.c
drivers/md/dm-delay.c
drivers/md/dm-flakey.c
drivers/md/dm-linear.c
drivers/md/dm-raid1.c
drivers/md/dm-unstripe.c