diff options
author | Alan Cox <alan@lxorguk.ukuu.org.uk> | 2005-10-29 00:14:52 +0200 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-10-29 01:06:44 +0200 |
commit | 2c36ed22c6f64de94c6c3b7258dd7285bb093401 (patch) | |
tree | bf8ab970180df5abe28d0c75d993a86a063bd8d5 /drivers/net/wireless/hermes.h | |
parent | [PATCH] revert "orinoco: Information leakage due to incorrect padding" (diff) | |
download | linux-2c36ed22c6f64de94c6c3b7258dd7285bb093401.tar.xz linux-2c36ed22c6f64de94c6c3b7258dd7285bb093401.zip |
[PATCH] Better fixup for the orinoco driver
The latest kernel added a pretty ugly fix for the orinoco etherleak bug
which contains bogus skb->len checks already done by the caller and causes
copies of all odd sized frames (which are quite common)
While the skb->len check should be ripped out the other fix is harder to do
properly so I'm proposing for this the -mm tree only until next 2.6.x so
that it gets tested.
Instead of copying buffers around blindly this code implements a padding
aware version of the hermes buffer writing function which does padding as
the buffer is loaded and thus more cleanly and without bogus 1.5K copies.
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'drivers/net/wireless/hermes.h')
-rw-r--r-- | drivers/net/wireless/hermes.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/wireless/hermes.h b/drivers/net/wireless/hermes.h index ad28e3294360..a6bd472d75d4 100644 --- a/drivers/net/wireless/hermes.h +++ b/drivers/net/wireless/hermes.h @@ -376,6 +376,8 @@ int hermes_bap_pread(hermes_t *hw, int bap, void *buf, unsigned len, u16 id, u16 offset); int hermes_bap_pwrite(hermes_t *hw, int bap, const void *buf, unsigned len, u16 id, u16 offset); +int hermes_bap_pwrite_pad(hermes_t *hw, int bap, const void *buf, + unsigned data_len, unsigned len, u16 id, u16 offset); int hermes_read_ltv(hermes_t *hw, int bap, u16 rid, unsigned buflen, u16 *length, void *buf); int hermes_write_ltv(hermes_t *hw, int bap, u16 rid, |