From: Peter Korsgaard <jacmet-OfajU3CKLf1/SzgSGea1oA@public.gmane.org>
To: jeff-o2qLIJkoznsdnm+yROfE0A@public.gmane.org,
netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: [PATCH RESEND] dm9601: don't do usb transfers of data on stack
Date: Fri, 11 Jul 2008 13:37:39 +0200 [thread overview]
Message-ID: <87mykoircs.fsf@macbook.be.48ers.dk> (raw)
dm_{read,write}_shared_word() were doing USB transfers of data on stack,
which isn't allowed. Fix it by using the usbnet->data area like in
dm9601_set_multicast().
Signed-off-by: Peter Korsgaard <jacmet-OfajU3CKLf1/SzgSGea1oA@public.gmane.org>
---
Resending since no feedback (27/06).
drivers/net/usb/dm9601.c | 14 ++++++++++++--
1 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/drivers/net/usb/dm9601.c b/drivers/net/usb/dm9601.c
index f7319d3..1a5e649 100644
--- a/drivers/net/usb/dm9601.c
+++ b/drivers/net/usb/dm9601.c
@@ -158,6 +158,10 @@ static void dm_write_reg_async(struct usbnet *dev, u8 reg, u8 value)
static int dm_read_shared_word(struct usbnet *dev, int phy, u8 reg, __le16 *value)
{
int ret, i;
+ /* USB transfers of data on stack is not allowed - We use
+ the 20 byte dev->data for value to avoid allocating memory.
+ Notice that dm9601_set_multicast() uses the lower 8 bytes */
+ void *data = &dev->data[4];
mutex_lock(&dev->phy_mutex);
@@ -184,7 +188,8 @@ static int dm_read_shared_word(struct usbnet *dev, int phy, u8 reg, __le16 *valu
}
dm_write_reg(dev, DM_SHARED_CTRL, 0x0);
- ret = dm_read(dev, DM_SHARED_DATA, 2, value);
+ ret = dm_read(dev, DM_SHARED_DATA, 2, data);
+ memcpy(value, data, 2);
devdbg(dev, "read shared %d 0x%02x returned 0x%04x, %d",
phy, reg, *value, ret);
@@ -197,10 +202,15 @@ static int dm_read_shared_word(struct usbnet *dev, int phy, u8 reg, __le16 *valu
static int dm_write_shared_word(struct usbnet *dev, int phy, u8 reg, __le16 value)
{
int ret, i;
+ /* USB transfers of data on stack is not allowed - We use
+ the 20 byte dev->data for value to avoid allocating memory.
+ Notice that dm9601_set_multicast() uses the lower 8 bytes */
+ void *data = &dev->data[4];
mutex_lock(&dev->phy_mutex);
- ret = dm_write(dev, DM_SHARED_DATA, 2, &value);
+ memcpy(data, &value, sizeof(value));
+ ret = dm_write(dev, DM_SHARED_DATA, 2, data);
if (ret < 0)
goto out;
--
1.5.5.1
--
Bye, Peter Korsgaard
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next reply other threads:[~2008-07-11 11:37 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-11 11:37 Peter Korsgaard [this message]
[not found] ` <87mykoircs.fsf-uXGAPMMVk8amE9MCos8gUmSdvHPH+/yF@public.gmane.org>
2008-07-11 12:00 ` [PATCH RESEND] dm9601: don't do usb transfers of data on stack Oliver Neukum
[not found] ` <200807111400.38312.oliver-GvhC2dPhHPQdnm+yROfE0A@public.gmane.org>
2008-07-11 12:17 ` Peter Korsgaard
2008-07-11 12:22 ` Oliver Neukum
[not found] ` <200807111422.56406.oliver-GvhC2dPhHPQdnm+yROfE0A@public.gmane.org>
2008-07-11 12:55 ` Peter Korsgaard
2008-07-11 12:57 ` Peter Korsgaard
[not found] ` <87mykoefy4.fsf-uXGAPMMVk8amE9MCos8gUmSdvHPH+/yF@public.gmane.org>
2008-07-11 22:02 ` David Brownell
[not found] ` <200807111502.20507.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-07-14 7:07 ` Peter Korsgaard
[not found] ` <87wsjp9c5n.fsf-uXGAPMMVk8amE9MCos8gUmSdvHPH+/yF@public.gmane.org>
2008-07-30 8:48 ` Jeff Garzik
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87mykoircs.fsf@macbook.be.48ers.dk \
--to=jacmet-ofaju3cklf1/szgsgea1oa@public.gmane.org \
--cc=jeff-o2qLIJkoznsdnm+yROfE0A@public.gmane.org \
--cc=linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.