[PATCH 2/2] libertas: fix oops on the blackfin architecture

Vladimir Davydov vladimir.davydov at promwad.com
Fri Aug 31 10:16:23 EDT 2007


Fixing memory alignment problems on the blackfin architecture (maybe on the 
ARM also)

Signed-off-by: Vladimir Davydov <vladimir.davydov at promwad.com>

---

diff -Naur libertas.orig/scan.c libertas/scan.c
--- libertas.orig/scan.c        2007-08-30 15:45:59.000000000 +0300
+++ libertas/scan.c     2007-08-31 15:33:59.000000000 +0300
@@ -13,6 +13,8 @@
 #include <net/ieee80211.h>
 #include <net/iw_handler.h>

+#include <asm/unaligned.h>
+
 #include "host.h"
 #include "decl.h"
 #include "dev.h"
@@ -886,7 +888,7 @@

        if (*bytesleft >= sizeof(beaconsize)) {
                /* Extract & convert beacon size from the command buffer */
-               beaconsize = le16_to_cpup((void *)*pbeaconinfo);
+               beaconsize = le16_to_cpu(get_unaligned((u16 *)*pbeaconinfo));
                *bytesleft -= sizeof(beaconsize);
                *pbeaconinfo += sizeof(beaconsize);
        }
@@ -1696,10 +1698,10 @@
                goto done;
        }

-       bytesleft = le16_to_cpu(pscan->bssdescriptsize);
+       bytesleft = le16_to_cpu(get_unaligned((u16*)&pscan->bssdescriptsize));
        lbs_deb_scan("SCAN_RESP: bssdescriptsize %d\n", bytesleft);

-       scanrespsize = le16_to_cpu(resp->size);
+       scanrespsize = le16_to_cpu(get_unaligned((u16*)&resp->size));
        lbs_deb_scan("SCAN_RESP: returned %d AP before parsing\n",
               pscan->nr_sets);

-- 
Best regards!



More information about the libertas-dev mailing list