[dm-devel] logfs: kernel NULL dereference
Jörn Engel
joern at logfs.org
Wed Sep 14 18:34:29 UTC 2011
Forwarded to dm-devel. Problem is a NULL pointer dereference in
kcryptd_io_read, which is triggered when mounting logfs. If someone
with device mapper knowledge could have a look, that would be useful.
On Wed, 14 September 2011 20:24:25 +0200, Jörn Engel wrote:
>
> Ok, I can reliably reproduce the problem with the following, based on
> your description:
>
> truncate -s 0 foo
> truncate -s 1G foo
> losetup -v -f foo
> cryptsetup luksFormat /dev/loop0
> cryptsetup luksOpen /dev/loop0 foo
> pvcreate /dev/mapper/foo
> vgcreate our_volume /dev/mapper/foo
> lvcreate -L 128M -n logfstest our_volume
> yes yes | mklogfs /dev/mapper/our_volume-logfstest
> mount /dev/mapper/our_volume-logfstest /mnt/
>
> It is a bit annoying that cryptsetup cannot easily be scripted. Oh
> well! Problem is indeed with the memcpy, except that
> bio_iovec(base_bio) is NULL, not clone->bi_io_vec. I have added this
> line in a bunch of places to get a better idea.
> printk("%p %p %p %s\n", bio, bio->bi_io_vec, bio_iovec(bio), __func__);
>
> ffff88023424fc18 ffff88023424fca8 ffff88023424fca8 sync_request
> ffff88023424fc18 ffff88023424fca8 ffff88023424fca8 dm_request
> ffff88023424fc18 ffff88023424fca8 ffff88023424fca8 _dm_request
> ffff88023424fc18 ffff88023424fca8 ffff88023424fca8 __split_and_process_bio
> ffff880235a10d40 (null) (null) __map_bio
> ffff880235a10d40 (null) (null) dm_request
> ffff880235a10d40 (null) (null) _dm_request
> ffff880235a10d40 (null) (null) __split_and_process_bio
> ffff880235368780 (null) (null) __map_bio
> ffff880235368780 (null) (null) crypt_map
> ffff880235368780 (null) (null) kcryptd_io_read
>
> So __split_and_process_bio creates two new bios, both of which lack a
> bi_io_vec member and one of which gets passed to kcryptd_io_read
> eventually. Ho hum.
>
> My understanding of device mapper is not good enough yet to understand
> what is really going on here.
>
> Jörn
>
> --
> One of my most productive days was throwing away 1000 lines of code.
> -- Ken Thompson.
Jörn
--
In America you can have either a flimsy box banged together out of two
by fours and drywall, or a McMansion -- a flimsy box banged together
out of two by fours and drywall, but larger, more dramatic-looking,
and full of expensive fittings.
-- Paul Graham
More information about the dm-devel
mailing list