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

Commit 9b5458ef authored by Petr Malat's avatar Petr Malat Committed by Greg Kroah-Hartman
Browse files

sctp: Fix COMM_LOST/CANT_STR_ASSOC err reporting on big-endian platforms



[ Upstream commit b6df8c81412190fbd5eaa3cec7f642142d9c16cd ]

Commit 978aa047 ("sctp: fix some type cast warnings introduced since
very beginning")' broke err reading from sctp_arg, because it reads the
value as 32-bit integer, although the value is stored as 16-bit integer.
Later this value is passed to the userspace in 16-bit variable, thus the
user always gets 0 on big-endian platforms. Fix it by reading the __u16
field of sctp_arg union, as reading err field would produce a sparse
warning.

Fixes: 978aa047 ("sctp: fix some type cast warnings introduced since very beginning")
Signed-off-by: default avatarPetr Malat <oss@malat.biz>
Acked-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Link: https://lore.kernel.org/r/20201030132633.7045-1-oss@malat.biz


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 26ffb891
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1600,12 +1600,12 @@ static int sctp_cmd_interpreter(enum sctp_event_type event_type,
			break;

		case SCTP_CMD_INIT_FAILED:
			sctp_cmd_init_failed(commands, asoc, cmd->obj.u32);
			sctp_cmd_init_failed(commands, asoc, cmd->obj.u16);
			break;

		case SCTP_CMD_ASSOC_FAILED:
			sctp_cmd_assoc_failed(commands, asoc, event_type,
					      subtype, chunk, cmd->obj.u32);
					      subtype, chunk, cmd->obj.u16);
			break;

		case SCTP_CMD_INIT_COUNTER_INC: