]> granicus.if.org Git - zfs/commitdiff
Fix regression in zfs_ereport_start()
authorDon Brady <don.brady@intel.com>
Wed, 5 Apr 2017 21:24:26 +0000 (15:24 -0600)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 5 Apr 2017 21:24:26 +0000 (14:24 -0700)
On 32-bit platforms spa_state is 32 bits without cast, and thus
caused a NULL pointer dereference when treated as 64bit in
var arg.  Accidentally introduced by bcdb96a.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Nathaniel Clark <nathaniel.l.clark@intel.com>
Signed-off-by: Don Brady <don.brady@intel.com>
Closes #5966
Closes #5965

module/zfs/zfs_fm.c

index 2451bfbc000ef9d94e84ce3546b306583155e0bc..6c0b038bee9a7cdb7c83bc69c80a6a8f8f0b482c 100644 (file)
@@ -269,9 +269,10 @@ zfs_ereport_start(nvlist_t **ereport_out, nvlist_t **detector_out,
        fm_payload_set(ereport,
            FM_EREPORT_PAYLOAD_ZFS_POOL, DATA_TYPE_STRING, spa_name(spa),
            FM_EREPORT_PAYLOAD_ZFS_POOL_GUID, DATA_TYPE_UINT64, spa_guid(spa),
-           FM_EREPORT_PAYLOAD_ZFS_POOL_STATE, DATA_TYPE_UINT64, spa_state(spa),
+           FM_EREPORT_PAYLOAD_ZFS_POOL_STATE, DATA_TYPE_UINT64,
+           (uint64_t)spa_state(spa),
            FM_EREPORT_PAYLOAD_ZFS_POOL_CONTEXT, DATA_TYPE_INT32,
-           spa_load_state(spa), NULL);
+           (int32_t)spa_load_state(spa), NULL);
 
        fm_payload_set(ereport, FM_EREPORT_PAYLOAD_ZFS_POOL_FAILMODE,
            DATA_TYPE_STRING,