From 5b7b80bbe6db5de9da7d252fb07a76e2ba8efee9 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Fri, 8 Oct 2010 09:59:38 +0200 Subject: [PATCH] Update to pass back minor mapped Signed-off-by: Jens Axboe --- main.c | 12 ++++++++++-- tools/bbind.c | 14 ++++++-------- tools/bdel.c | 6 ++---- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/main.c b/main.c index 5831cd5..676fd1e 100644 --- a/main.c +++ b/main.c @@ -648,6 +648,7 @@ static int b_add_dev(struct b_ioctl_cmd *bic) goto out_idr; list_add_tail(&bd->device_list, &b_dev_list); + bic->minor = bd->minor; spin_unlock(&b_dev_lock); return 0; out_idr: @@ -665,15 +666,22 @@ static long b_misc_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { int __user *uarg = (int __user *) arg; struct b_ioctl_cmd bic; + int ret = -ENOTTY; if (copy_from_user(&bic, uarg, sizeof(bic))) return -EFAULT; switch (cmd) { case 0: - return b_add_dev(&bic); + ret = b_add_dev(&bic); + if (!ret && copy_to_user(uarg, &bic, sizeof(bic))) { + b_del_dev(&bic); + ret = -EFAULT; + } + break; case 1: - return b_del_dev(&bic); + ret = b_del_dev(&bic); + break; default: break; } diff --git a/tools/bbind.c b/tools/bbind.c index 271354d..78803a1 100644 --- a/tools/bbind.c +++ b/tools/bbind.c @@ -2,14 +2,10 @@ #include #include #include +#include #include -#define B_NAME_LEN 32 - -struct b_ioctl_cmd { - int fd; - char name[B_NAME_LEN]; -}; +#include "../binject.h" int main(int argc, char *argv[]) { @@ -33,10 +29,12 @@ int main(int argc, char *argv[]) } bic.fd = fd; - strcpy(bic.name, argv[1]); - if (ioctl(fdb, 0, &bic) < 0) + if (ioctl(fdb, 0, &bic) < 0) { perror("ioctl"); + return 1; + } + printf("%s mapped to binject minor %u\n", argv[1], bic.minor); return 0; } diff --git a/tools/bdel.c b/tools/bdel.c index 4a84728..5e8116d 100644 --- a/tools/bdel.c +++ b/tools/bdel.c @@ -5,11 +5,9 @@ #include #include #include +#include -struct b_ioctl_cmd { - int fd; - int minor; -}; +#include "../binject.h" int main(int argc, char *argv[]) { -- 2.25.1