From fecbb7056d621a30f7106e67f5fe209763571b70 Mon Sep 17 00:00:00 2001
From: Andrea Adami <andrea.adami@gmail.com>
Date: Sun, 29 Jun 2014 00:40:15 +0200
Subject: [PATCH 3/9] libubi.c: add klibc specific fixes for ioctl

First issue is that ioctl() in klibc doesn't expect a constant as arg3.
Second issue is that arg3 in klibc ioctl() implementation is not optional.

Fixes:

| ubi-utils/libubi.c: In function 'do_attach':
| ubi-utils/libubi.c:698:8: warning: passing argument 3 of 'ioctl' discards
| 'const' qualifier from pointer target type
|   ret = ioctl(fd, UBI_IOCATT, r);
|         ^
| In file included from ubi-utils/libubi.c:32:0:
| .../lib/klibc/include/sys/ioctl.h:15:14: note: expected 'void *' but argument
| is of type 'const struct ubi_attach_req *'
|  __extern int ioctl(int, int, void *);
|               ^

| ubi-utils/libubi.c: In function 'ubi_vol_block_create':
| ubi-utils/libubi.c:1118:9: error: too few arguments to function 'ioctl'
|   return ioctl(fd, UBI_IOCVOLCRBLK);
|          ^
| In file included from ubi-utils/libubi.c:32:0:
| .../lib/klibc/include/sys/ioctl.h:15:14: note: declared here
|  __extern int ioctl(int, int, void *);
|               ^
| ubi-utils/libubi.c: In function 'ubi_vol_block_remove':
| ubi-utils/libubi.c:1123:9: error: too few arguments to function 'ioctl'
|   return ioctl(fd, UBI_IOCVOLRMBLK);
|          ^
| In file included from ubi-utils/libubi.c:32:0:
| .../usr/lib/klibc/include/sys/ioctl.h:15:14: note: declared here
|  __extern int ioctl(int, int, void *);
|               ^

Upstream-Status: Accepted

Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
---
 ubi-utils/libubi.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/ubi-utils/libubi.c b/ubi-utils/libubi.c
index 97c0434..2b49833 100644
--- a/ubi-utils/libubi.c
+++ b/ubi-utils/libubi.c
@@ -687,7 +687,7 @@ void libubi_close(libubi_t desc)
  * success and %-1 in case of failure. @r->ubi_num contains newly created UBI
  * device number.
  */
-static int do_attach(const char *node, const struct ubi_attach_req *r)
+static int do_attach(const char *node, struct ubi_attach_req *r)
 {
 	int fd, ret;
 
@@ -1115,12 +1115,12 @@ int ubi_rsvol(libubi_t desc, const char *node, int vol_id, long long bytes)
 
 int ubi_vol_block_create(int fd)
 {
-	return ioctl(fd, UBI_IOCVOLCRBLK);
+	return ioctl(fd, UBI_IOCVOLCRBLK, NULL);
 }
 
 int ubi_vol_block_remove(int fd)
 {
-	return ioctl(fd, UBI_IOCVOLRMBLK);
+	return ioctl(fd, UBI_IOCVOLRMBLK, NULL);
 }
 
 int ubi_update_start(libubi_t desc, int fd, long long bytes)
-- 
2.7.4

