diff options
author | Brian Behlendorf <[email protected]> | 2015-07-24 12:08:53 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2015-07-28 13:30:53 -0700 |
commit | c97d30691c0d599e80370090988a79dd8175b5a8 (patch) | |
tree | 840537e53d43e64ee0bf4ee2e305cf8c88b138ae | |
parent | 21d41d6806edce8217dfd5d16e74a6a8a4f5fe1b (diff) |
Check for NULL in dmu_free_long_range_impl()
A NULL should never be passed as the dnode_t pointer to the function
dmu_free_long_range_impl(). Regardless, because we have a reported
occurrence of this let's add some error handling to catch this.
Better to report a reasonable error to caller than panic the system.
Signed-off-by: Brian Behlendorf <[email protected]>
Issue #3445
-rw-r--r-- | module/zfs/dmu.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/module/zfs/dmu.c b/module/zfs/dmu.c index 7d3945433..eb3bc0ed2 100644 --- a/module/zfs/dmu.c +++ b/module/zfs/dmu.c @@ -644,9 +644,13 @@ static int dmu_free_long_range_impl(objset_t *os, dnode_t *dn, uint64_t offset, uint64_t length) { - uint64_t object_size = (dn->dn_maxblkid + 1) * dn->dn_datablksz; + uint64_t object_size; int err; + if (dn == NULL) + return (SET_ERROR(EINVAL)); + + object_size = (dn->dn_maxblkid + 1) * dn->dn_datablksz; if (offset >= object_size) return (0); |