diff options
author | George Wilson <[email protected]> | 2013-02-10 22:21:05 -0800 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2013-10-30 14:51:27 -0700 |
commit | a117a6d66e5cf1e9d4f173bccc786a169e9a8e04 (patch) | |
tree | 26f5e36ff44a6f4977a34d66b528892560b74185 /module/zfs/dsl_dataset.c | |
parent | a35beedfb3f25596b4ec9122742c1337083118f5 (diff) |
Illumos #3522
3522 zfs module should not allow uninitialized variables
Reviewed by: Sebastien Roy <[email protected]>
Reviewed by: Adam Leventhal <[email protected]>
Reviewed by: Matthew Ahrens <[email protected]>
Approved by: Garrett D'Amore <[email protected]>
References:
https://www.illumos.org/issues/3522
illumos/illumos-gate@d5285cae913f4e01ffa0e6693a6d8ef1fbea30ba
Ported-by: Richard Yao <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Porting notes:
1. ZFSOnLinux had already addressed many of these issues because of
its use of -Wall. However, the manner in which they were addressed
differed. The illumos fixes replace the ones previously made in
ZFSOnLinux to reduce code differences.
2. Part of the upstream patch made a small change to arc.c that might
address zfsonlinux/zfs#1334.
3. The initialization of aclsize in zfs_log_create() differs because
vsecp is a NULL pointer on ZFSOnLinux.
4. The changes to zfs_register_callbacks() were dropped because it
has diverged and needs to be resynced.
Diffstat (limited to 'module/zfs/dsl_dataset.c')
-rw-r--r-- | module/zfs/dsl_dataset.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/module/zfs/dsl_dataset.c b/module/zfs/dsl_dataset.c index 5c0ca4d96..33bcd2ab3 100644 --- a/module/zfs/dsl_dataset.c +++ b/module/zfs/dsl_dataset.c @@ -431,11 +431,8 @@ dsl_dataset_hold_obj(dsl_pool_t *dp, uint64_t dsobj, void *tag, ds->ds_reserved = ds->ds_quota = 0; } - if (err == 0) { - winner = dmu_buf_set_user_ie(dbuf, ds, &ds->ds_phys, - dsl_dataset_evict); - } - if (err || winner) { + if (err != 0 || (winner = dmu_buf_set_user_ie(dbuf, ds, + &ds->ds_phys, dsl_dataset_evict)) != NULL) { bplist_destroy(&ds->ds_pending_deadlist); dsl_deadlist_close(&ds->ds_deadlist); if (ds->ds_prev) |