Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ad3cbf61 authored by Julian Wiedmann's avatar Julian Wiedmann Committed by David S. Miller
Browse files

s390/qeth: fix error handling in checksum cmd callback



Make sure to check both return code fields before processing the
response. Otherwise we risk operating on invalid data.

Fixes: c9475369 ("s390/qeth: rework RX/TX checksum offload")
Signed-off-by: default avatarJulian Wiedmann <jwi@linux.vnet.ibm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent bb25c385
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -5386,6 +5386,13 @@ int qeth_poll(struct napi_struct *napi, int budget)
}
EXPORT_SYMBOL_GPL(qeth_poll);

static int qeth_setassparms_inspect_rc(struct qeth_ipa_cmd *cmd)
{
	if (!cmd->hdr.return_code)
		cmd->hdr.return_code = cmd->data.setassparms.hdr.return_code;
	return cmd->hdr.return_code;
}

int qeth_setassparms_cb(struct qeth_card *card,
			struct qeth_reply *reply, unsigned long data)
{
@@ -6242,7 +6249,7 @@ static int qeth_ipa_checksum_run_cmd_cb(struct qeth_card *card,
				(struct qeth_checksum_cmd *)reply->param;

	QETH_CARD_TEXT(card, 4, "chkdoccb");
	if (cmd->hdr.return_code)
	if (qeth_setassparms_inspect_rc(cmd))
		return 0;

	memset(chksum_cb, 0, sizeof(*chksum_cb));