From 5418d81b3820c4a900f2188badcafc9868750457 Mon Sep 17 00:00:00 2001 From: pjd Date: Wed, 19 Oct 2011 23:40:37 +0000 Subject: Never pass NULL block pointer when reading. This is neither expected nor handled by lower layers like vdev_raidz, which uses bp for checksum verification. This bug could lead to NULL pointer reference and resets during boot. MFC after: 3 days --- sys/boot/zfs/zfsimpl.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'sys/boot/zfs') diff --git a/sys/boot/zfs/zfsimpl.c b/sys/boot/zfs/zfsimpl.c index 3052db6..b8d1606 100644 --- a/sys/boot/zfs/zfsimpl.c +++ b/sys/boot/zfs/zfsimpl.c @@ -988,7 +988,8 @@ zio_read_gang(spa_t *spa, const blkptr_t *bp, const dva_t *dva, void *buf) break; if (!vdev || !vdev->v_read) return (EIO); - if (vdev->v_read(vdev, NULL, &zio_gb, offset, SPA_GANGBLOCKSIZE)) + + if (vdev->v_read(vdev, bp, &zio_gb, offset, SPA_GANGBLOCKSIZE)) return (EIO); for (i = 0; i < SPA_GBH_NBLKPTRS; i++) { -- cgit v1.1