On Wed, Sep 11, 2019 at 1:27 AM David Miller <davem@xxxxxxxxxxxxx> wrote: > > From: Xin Long <lucien.xin@xxxxxxxxx> > Date: Mon, 9 Sep 2019 15:56:51 +0800 > > > diff --git a/include/uapi/linux/sctp.h b/include/uapi/linux/sctp.h > > index a15cc28..dfd81e1 100644 > > --- a/include/uapi/linux/sctp.h > > +++ b/include/uapi/linux/sctp.h > > @@ -1069,6 +1069,7 @@ struct sctp_paddrthlds { > > struct sockaddr_storage spt_address; > > __u16 spt_pathmaxrxt; > > __u16 spt_pathpfthld; > > + __u16 spt_pathcpthld; > > }; > > > > /* > > As pointed out you can't add things to this structure without breaking existing > binaries. we had the same problem when adding: spp_ipv6_flowlabel and spp_dscp into struct sctp_paddrparams. in: commit 0b0dce7a36fb9f1a9dd8245ea82d3a268c6943fe Author: Xin Long <lucien.xin@xxxxxxxxx> Date: Mon Jul 2 18:21:13 2018 +0800 sctp: add spp_ipv6_flowlabel and spp_dscp for sctp_paddrparams the solution was: if (optlen == sizeof(params)) { if (copy_from_user(¶ms, optval, optlen)) return -EFAULT; } else if (optlen == ALIGN(offsetof(struct sctp_paddrparams, spp_ipv6_flowlabel), 4)) { if (copy_from_user(¶ms, optval, optlen)) return -EFAULT; if (params.spp_flags & (SPP_DSCP | SPP_IPV6_FLOWLABEL)) return -EINVAL; } else { return -EINVAL; } I will do the same for this patch. Thanks.