Initialize remaining "ioc" fields, and fix logic so socket "close" call is
actually executed (based on wl_ioctl from trunk broadcom-wl driver).

Signed-off-by: Nathan Hintz <[email protected]>

Index: backfire/package/broadcom-wl/src/wlc/ioctl.c
===================================================================
--- backfire/package/broadcom-wl/src/wlc/ioctl.c        (revision 29492)
+++ backfire/package/broadcom-wl/src/wlc/ioctl.c        (working copy)
@@ -48,9 +48,17 @@
        ioc.cmd = cmd;
        ioc.buf = buf;
        ioc.len = len;
+
+       /* initializing the remaining fields */
+       ioc.set = FALSE;
+       ioc.used = 0;
+       ioc.needed = 0;
+
        strncpy(ifr.ifr_name, name, IFNAMSIZ);
        ifr.ifr_data = (caddr_t) &ioc;
        if ((ret = ioctl(s, SIOCDEVPRIVATE, &ifr)) < 0)
+               if (cmd != WLC_GET_MAGIC)
+                       perror(ifr.ifr_name);
 
        /* cleanup */
        close(s);
Index: backfire/package/broadcom-wl/src/wlcompat/wlcompat.c
===================================================================
--- backfire/package/broadcom-wl/src/wlcompat/wlcompat.c        (revision 29492)
+++ backfire/package/broadcom-wl/src/wlcompat/wlcompat.c        (working copy)
@@ -82,6 +82,9 @@
        ioc.cmd = cmd;
        ioc.buf = buf;
        ioc.len = len;
+       ioc.set = FALSE;
+       ioc.used = 0;
+       ioc.needed = 0;
        strncpy(ifr.ifr_name, dev->name, IFNAMSIZ);
        ifr.ifr_data = (caddr_t) &ioc;
        set_fs(KERNEL_DS);

_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to