]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
p54: fix p54_read_eeprom to cope with tx_hdr_len
authorChristian Lamparter <chunkeey@web.de>
Sat, 24 Jan 2009 09:44:40 +0000 (10:44 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 6 Feb 2009 21:47:20 +0000 (13:47 -0800)
commit b92f30d65aeb0502e2ed8beb80c8465578b40002 upstream

This patch fixes a regression in "p54: move eeprom code into common library"
7cb770729ba895f73253dfcd46c3fcba45d896f9

Some of p54usb's devices need a little headroom for the transportation and
this was forgotten in the eeprom change.

Signed-off-by: Christian Lamparter <chunkeey@web.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/net/wireless/p54/p54common.c

index 827ca0384a4ca220151a048528964ffcbf172ee3..b4831fd5b3e3ecda20f39e9b3cdcad2b1c39e8d4 100644 (file)
@@ -741,17 +741,19 @@ static void p54_assign_address(struct ieee80211_hw *dev, struct sk_buff *skb,
 int p54_read_eeprom(struct ieee80211_hw *dev)
 {
        struct p54_common *priv = dev->priv;
-       struct p54_control_hdr *hdr = NULL;
+       struct p54_control_hdr *hdr = NULL, *org_hdr;
        struct p54_eeprom_lm86 *eeprom_hdr;
        size_t eeprom_size = 0x2020, offset = 0, blocksize;
        int ret = -ENOMEM;
        void *eeprom = NULL;
 
-       hdr = (struct p54_control_hdr *)kzalloc(sizeof(*hdr) +
-               sizeof(*eeprom_hdr) + EEPROM_READBACK_LEN, GFP_KERNEL);
-       if (!hdr)
+       org_hdr = kzalloc(priv->tx_hdr_len + sizeof(*hdr) +
+                         sizeof(*eeprom_hdr) + EEPROM_READBACK_LEN,
+                         GFP_KERNEL);
+       if (!org_hdr)
                goto free;
 
+       hdr = (void *) org_hdr + priv->tx_hdr_len;
        priv->eeprom = kzalloc(EEPROM_READBACK_LEN, GFP_KERNEL);
        if (!priv->eeprom)
                goto free;
@@ -790,7 +792,7 @@ int p54_read_eeprom(struct ieee80211_hw *dev)
 free:
        kfree(priv->eeprom);
        priv->eeprom = NULL;
-       kfree(hdr);
+       kfree(org_hdr);
        kfree(eeprom);
 
        return ret;