Hello Gabriel, On Thu, Aug 17, 2023 at 02:38:46PM -0400, Gabriel Krisman Bertazi wrote: > Breno Leitao <leitao@xxxxxxxxxx> writes: > > > +#if defined(CONFIG_NET) > > int io_uring_cmd_sock(struct io_uring_cmd *cmd, unsigned int issue_flags) > > { > > struct socket *sock = cmd->file->private_data; > > @@ -189,8 +219,16 @@ int io_uring_cmd_sock(struct io_uring_cmd *cmd, unsigned int issue_flags) > > if (ret) > > return ret; > > return arg; > > + case SOCKET_URING_OP_GETSOCKOPT: > > + return io_uring_cmd_getsockopt(sock, cmd, issue_flags); > > default: > > return -EOPNOTSUPP; > > } > > } > > +#else > > +int io_uring_cmd_sock(struct io_uring_cmd *cmd, unsigned int issue_flags) > > +{ > > + return -EOPNOTSUPP; > > +} > > +#endif > > EXPORT_SYMBOL_GPL(io_uring_cmd_sock); > > The CONFIG_NET guards are unrelated and need to go in a separate commit. > Specially because it is not only gating getsockopt, but also the already > merged SOCKET_URING_OP_SIOCINQ/_OP_SIOCOUTQ. Well, so far, if CONFIG_NET is disable, and you call io_uring_cmd_getsockopt, the callbacks will be called and returned -EOPNOTSUPP. With this new patch, it will eventually call sk_getsockopt which does not exist in the CONFIG_NET=n world. That is why I have this protection now. I.e, this `#if defined(CONFIG_NET)` is only necessary now, since it is the first time this function (io_uring_cmd_sock) will call a function that does not exist if CONFIG_NET is disabled. I can split it in a different patch, if you think it makes a difference.