io_uring/notif: remove notif registration
[linux-2.6-microblaze.git] / io_uring / notif.c
index 96f076b..11f4564 100644 (file)
@@ -86,74 +86,3 @@ void io_notif_slot_flush(struct io_notif_slot *slot)
                io_req_task_work_add(notif);
        }
 }
-
-__cold int io_notif_unregister(struct io_ring_ctx *ctx)
-       __must_hold(&ctx->uring_lock)
-{
-       int i;
-
-       if (!ctx->notif_slots)
-               return -ENXIO;
-
-       for (i = 0; i < ctx->nr_notif_slots; i++) {
-               struct io_notif_slot *slot = &ctx->notif_slots[i];
-               struct io_kiocb *notif = slot->notif;
-               struct io_notif_data *nd;
-
-               if (!notif)
-                       continue;
-               nd = io_notif_to_data(notif);
-               slot->notif = NULL;
-               if (!refcount_dec_and_test(&nd->uarg.refcnt))
-                       continue;
-               notif->io_task_work.func = __io_notif_complete_tw;
-               io_req_task_work_add(notif);
-       }
-
-       kvfree(ctx->notif_slots);
-       ctx->notif_slots = NULL;
-       ctx->nr_notif_slots = 0;
-       return 0;
-}
-
-__cold int io_notif_register(struct io_ring_ctx *ctx,
-                            void __user *arg, unsigned int size)
-       __must_hold(&ctx->uring_lock)
-{
-       struct io_uring_notification_slot __user *slots;
-       struct io_uring_notification_slot slot;
-       struct io_uring_notification_register reg;
-       unsigned i;
-
-       if (ctx->nr_notif_slots)
-               return -EBUSY;
-       if (size != sizeof(reg))
-               return -EINVAL;
-       if (copy_from_user(&reg, arg, sizeof(reg)))
-               return -EFAULT;
-       if (!reg.nr_slots || reg.nr_slots > IORING_MAX_NOTIF_SLOTS)
-               return -EINVAL;
-       if (reg.resv || reg.resv2 || reg.resv3)
-               return -EINVAL;
-
-       slots = u64_to_user_ptr(reg.data);
-       ctx->notif_slots = kvcalloc(reg.nr_slots, sizeof(ctx->notif_slots[0]),
-                               GFP_KERNEL_ACCOUNT);
-       if (!ctx->notif_slots)
-               return -ENOMEM;
-
-       for (i = 0; i < reg.nr_slots; i++, ctx->nr_notif_slots++) {
-               struct io_notif_slot *notif_slot = &ctx->notif_slots[i];
-
-               if (copy_from_user(&slot, &slots[i], sizeof(slot))) {
-                       io_notif_unregister(ctx);
-                       return -EFAULT;
-               }
-               if (slot.resv[0] | slot.resv[1] | slot.resv[2]) {
-                       io_notif_unregister(ctx);
-                       return -EINVAL;
-               }
-               notif_slot->tag = slot.tag;
-       }
-       return 0;
-}