Commit 07e0d99a authored by Chengen Du's avatar Chengen Du Committed by Konrad Rzeszutek Wilk
Browse files

iscsi_ibft: Fix UBSAN shift-out-of-bounds warning in ibft_attr_show_nic()



When performing an iSCSI boot using IPv6, iscsistart still reads the
/sys/firmware/ibft/ethernetX/subnet-mask entry. Since the IPv6 prefix
length is 64, this causes the shift exponent to become negative,
triggering a UBSAN warning. As the concept of a subnet mask does not
apply to IPv6, the value is set to ~0 to suppress the warning message.

Signed-off-by: default avatarChengen Du <chengen.du@canonical.com>
Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
parent e1e17a17
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -310,6 +310,9 @@ static ssize_t ibft_attr_show_nic(void *data, int type, char *buf)
		str += sprintf_ipaddr(str, nic->ip_addr);
		break;
	case ISCSI_BOOT_ETH_SUBNET_MASK:
		if (nic->subnet_mask_prefix > 32)
			val = cpu_to_be32(~0);
		else
			val = cpu_to_be32(~((1 << (32-nic->subnet_mask_prefix))-1));
		str += sprintf(str, "%pI4", &val);
		break;