diff options
author | Pawel Jakub Dawidek <pjd@FreeBSD.org> | 2011-10-19 23:40:37 +0000 |
---|---|---|
committer | Pawel Jakub Dawidek <pjd@FreeBSD.org> | 2011-10-19 23:40:37 +0000 |
commit | 8565a6f600be9514baf260148748813c7c9a0b78 (patch) | |
tree | 678cfff863e06cb718fbb3022e25d9522d0ef4da /sys | |
parent | f8d5a41b64c880211dbd2b3983cf646193ce2ff4 (diff) | |
download | src-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.c | 3 |
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++) { |