aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorPawel Jakub Dawidek <pjd@FreeBSD.org>2011-10-19 23:40:37 +0000
committerPawel Jakub Dawidek <pjd@FreeBSD.org>2011-10-19 23:40:37 +0000
commit8565a6f600be9514baf260148748813c7c9a0b78 (patch)
tree678cfff863e06cb718fbb3022e25d9522d0ef4da /sys
parentf8d5a41b64c880211dbd2b3983cf646193ce2ff4 (diff)
downloadsrc-8565a6f600be9514baf260148748813c7c9a0b78.tar.gz
src-8565a6f600be9514baf260148748813c7c9a0b78.zip
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
Notes
Notes: svn path=/head/; revision=226552
Diffstat (limited to 'sys')
-rw-r--r--sys/boot/zfs/zfsimpl.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/boot/zfs/zfsimpl.c b/sys/boot/zfs/zfsimpl.c
index 3052db66a5c1..b8d1606b5d28 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++) {