if (tsk->io_uring)
                __io_uring_free(tsk);
 }
+int io_uring_cmd_sock(struct io_uring_cmd *cmd, unsigned int issue_flags);
 #else
 static inline int io_uring_cmd_import_fixed(u64 ubuf, unsigned long len, int rw,
                              struct iov_iter *iter, void *ioucmd)
 {
        return "";
 }
+static inline int io_uring_cmd_sock(struct io_uring_cmd *cmd,
+                                   unsigned int issue_flags)
+{
+       return -EOPNOTSUPP;
+}
 #endif
 
 #endif
 
        __u32 flags;
 };
 
+/*
+ * Argument for IORING_OP_URING_CMD when file is a socket
+ */
+enum {
+       SOCKET_URING_OP_SIOCINQ         = 0,
+       SOCKET_URING_OP_SIOCOUTQ,
+};
+
 #ifdef __cplusplus
 }
 #endif
 
 #include <linux/nospec.h>
 
 #include <uapi/linux/io_uring.h>
+#include <uapi/asm-generic/ioctls.h>
 
 #include "io_uring.h"
 #include "rsrc.h"
        return io_import_fixed(rw, iter, req->imu, ubuf, len);
 }
 EXPORT_SYMBOL_GPL(io_uring_cmd_import_fixed);
+
+int io_uring_cmd_sock(struct io_uring_cmd *cmd, unsigned int issue_flags)
+{
+       struct socket *sock = cmd->file->private_data;
+       struct sock *sk = sock->sk;
+       struct proto *prot = READ_ONCE(sk->sk_prot);
+       int ret, arg = 0;
+
+       if (!prot || !prot->ioctl)
+               return -EOPNOTSUPP;
+
+       switch (cmd->sqe->cmd_op) {
+       case SOCKET_URING_OP_SIOCINQ:
+               ret = prot->ioctl(sk, SIOCINQ, &arg);
+               if (ret)
+                       return ret;
+               return arg;
+       case SOCKET_URING_OP_SIOCOUTQ:
+               ret = prot->ioctl(sk, SIOCOUTQ, &arg);
+               if (ret)
+                       return ret;
+               return arg;
+       default:
+               return -EOPNOTSUPP;
+       }
+}
+EXPORT_SYMBOL_GPL(io_uring_cmd_sock);
 
 #include <linux/xattr.h>
 #include <linux/nospec.h>
 #include <linux/indirect_call_wrapper.h>
+#include <linux/io_uring.h>
 
 #include <linux/uaccess.h>
 #include <asm/unistd.h>
 #ifdef CONFIG_COMPAT
        .compat_ioctl = compat_sock_ioctl,
 #endif
+       .uring_cmd =    io_uring_cmd_sock,
        .mmap =         sock_mmap,
        .release =      sock_close,
        .fasync =       sock_fasync,