From: Vasiliy Kulikov Date: Mon, 8 Nov 2010 13:42:40 +0000 (+0100) Subject: block: ioctl: fix information leak to userland X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=a014741c0adfb8fb79952939ca087cf03d272bb9;p=linux.git block: ioctl: fix information leak to userland Structure hd_geometry is copied to userland with 4 padding bytes between cylinders and start fields uninitialized on 64-bit platforms. It leads to leaking of contents of kernel stack memory. Currently there is no memset() in real implementations of getgeo() in drivers/block/, so it makes sense to have memset() in blkdev_ioctl(). Signed-off-by: Vasiliy Kulikov Signed-off-by: Jens Axboe --- diff --git a/block/ioctl.c b/block/ioctl.c index 38aa194f63ec2..3d866d0037f24 100644 --- a/block/ioctl.c +++ b/block/ioctl.c @@ -242,6 +242,7 @@ int blkdev_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd, * We need to set the startsect first, the driver may * want to override it. */ + memset(&geo, 0, sizeof(geo)); geo.start = get_start_sect(bdev); ret = disk->fops->getgeo(bdev, &geo); if (ret)