On Sun, May 20, 2018 at 04:39:10PM +0800, Xin Long wrote: > Now sctp uses inet_dgram_connect as its proto_ops .connect, and the flags > param can't be passed into its proto .connect where this flags is really > needed. > > sctp works around it by getting flags from socket file in __sctp_connect. > It works for connecting from userspace, as inherently the user sock has > socket file and it passes f_flags as the flags param into the proto_ops > .connect. > > However, the sock created by sock_create_kern doesn't have a socket file, > and it passes the flags (like O_NONBLOCK) by using the flags param in > kernel_connect, which calls proto_ops .connect later. > > So to fix it, this patch defines a new proto_ops .connect for sctp, > sctp_inet_connect, which calls __sctp_connect() directly with this > flags param. After this, the sctp's proto .connect can be removed. > > Note that sctp_inet_connect doesn't need to do some checks that are not > needed for sctp, which makes thing better than with inet_dgram_connect. > > Suggested-by: Marcelo Ricardo Leitner <marcelo.leitner@xxxxxxxxx> > Signed-off-by: Xin Long <lucien.xin@xxxxxxxxx> Reviewed-by: Michal Kubecek <mkubecek@xxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-sctp" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html