On Fri, Jun 9, 2023 at 7:05 AM Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote: > > The sctp_sf_eat_auth() function is supposed to enum sctp_disposition > values and returning a kernel error code will cause issues in the > caller. Change -ENOMEM to SCTP_DISPOSITION_NOMEM. > > Fixes: 65b07e5d0d09 ("[SCTP]: API updates to suport SCTP-AUTH extensions.") > Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> > --- > net/sctp/sm_statefuns.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c > index 97f1155a2045..08fdf1251f46 100644 > --- a/net/sctp/sm_statefuns.c > +++ b/net/sctp/sm_statefuns.c > @@ -4482,7 +4482,7 @@ enum sctp_disposition sctp_sf_eat_auth(struct net *net, > SCTP_AUTH_NEW_KEY, GFP_ATOMIC); > > if (!ev) > - return -ENOMEM; > + return SCTP_DISPOSITION_NOMEM; > > sctp_add_cmd_sf(commands, SCTP_CMD_EVENT_ULP, > SCTP_ULPEVENT(ev)); > -- > 2.39.2 > This one looks good to me. But for the patch 1/2 (somehow it doesn't show up in my mailbox): default: pr_err("impossible disposition %d in state %d, event_type %d, event_id %d\n", status, state, event_type, subtype.chunk); - BUG(); + error = status; + if (error >= 0) + error = -EINVAL; + WARN_ON_ONCE(1); I think from the sctp_do_sm() perspective, it expects the state_fn status only from enum sctp_disposition. It is a BUG to receive any other values and must be fixed, as you did in 2/2. It does the same thing as other functions in SCTP code, like sctp_sf_eat_data_*(), sctp_retransmit() etc. Thanks.