* [PATCH] net: can: usb: gs_usb: Fix buffer on stack
@ 2017-04-22 16:56 Maksim Salau
2017-04-22 17:30 ` Fabio Estevam
0 siblings, 1 reply; 4+ messages in thread
From: Maksim Salau @ 2017-04-22 16:56 UTC (permalink / raw)
To: Wolfgang Grandegger, Marc Kleine-Budde, Maximilian Schneider,
Hubert Denkmair, Wolfram Sang, Ethan Zonca, linux-can, netdev
Cc: Maksim Salau
Allocate buffer on HEAP instead of STACK for a local structure
that is to be sent using usb_control_msg().
Signed-off-by: Maksim Salau <maksim.salau@gmail.com>
---
drivers/net/can/usb/gs_usb.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/drivers/net/can/usb/gs_usb.c b/drivers/net/can/usb/gs_usb.c
index a0dabd4..98f972a 100644
--- a/drivers/net/can/usb/gs_usb.c
+++ b/drivers/net/can/usb/gs_usb.c
@@ -740,13 +740,18 @@ static const struct net_device_ops gs_usb_netdev_ops = {
static int gs_usb_set_identify(struct net_device *netdev, bool do_identify)
{
struct gs_can *dev = netdev_priv(netdev);
- struct gs_identify_mode imode;
+ struct gs_identify_mode *imode = NULL;
int rc;
+ imode = kmalloc(sizeof(*imode), GFP_KERNEL);
+
+ if (!imode)
+ return -ENOMEM;
+
if (do_identify)
- imode.mode = GS_CAN_IDENTIFY_ON;
+ imode->mode = GS_CAN_IDENTIFY_ON;
else
- imode.mode = GS_CAN_IDENTIFY_OFF;
+ imode->mode = GS_CAN_IDENTIFY_OFF;
rc = usb_control_msg(interface_to_usbdev(dev->iface),
usb_sndctrlpipe(interface_to_usbdev(dev->iface),
@@ -756,10 +761,12 @@ static int gs_usb_set_identify(struct net_device *netdev, bool do_identify)
USB_RECIP_INTERFACE,
dev->channel,
0,
- &imode,
- sizeof(imode),
+ imode,
+ sizeof(*imode),
100);
+ kfree(imode);
+
return (rc > 0) ? 0 : rc;
}
--
2.9.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] net: can: usb: gs_usb: Fix buffer on stack
2017-04-22 16:56 [PATCH] net: can: usb: gs_usb: Fix buffer on stack Maksim Salau
@ 2017-04-22 17:30 ` Fabio Estevam
2017-04-23 17:18 ` Maksim Salau
2017-04-23 17:31 ` [PATCH v2] " Maksim Salau
0 siblings, 2 replies; 4+ messages in thread
From: Fabio Estevam @ 2017-04-22 17:30 UTC (permalink / raw)
To: Maksim Salau
Cc: Wolfgang Grandegger, Marc Kleine-Budde, Maximilian Schneider,
Hubert Denkmair, Wolfram Sang, Ethan Zonca, linux-can,
netdev@vger.kernel.org
On Sat, Apr 22, 2017 at 1:56 PM, Maksim Salau <maksim.salau@gmail.com> wrote:
> Allocate buffer on HEAP instead of STACK for a local structure
> that is to be sent using usb_control_msg().
>
> Signed-off-by: Maksim Salau <maksim.salau@gmail.com>
> ---
> drivers/net/can/usb/gs_usb.c | 17 ++++++++++++-----
> 1 file changed, 12 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/can/usb/gs_usb.c b/drivers/net/can/usb/gs_usb.c
> index a0dabd4..98f972a 100644
> --- a/drivers/net/can/usb/gs_usb.c
> +++ b/drivers/net/can/usb/gs_usb.c
> @@ -740,13 +740,18 @@ static const struct net_device_ops gs_usb_netdev_ops = {
> static int gs_usb_set_identify(struct net_device *netdev, bool do_identify)
> {
> struct gs_can *dev = netdev_priv(netdev);
> - struct gs_identify_mode imode;
> + struct gs_identify_mode *imode = NULL;
No need to assign imode to NULL here.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] net: can: usb: gs_usb: Fix buffer on stack
2017-04-22 17:30 ` Fabio Estevam
@ 2017-04-23 17:18 ` Maksim Salau
2017-04-23 17:31 ` [PATCH v2] " Maksim Salau
1 sibling, 0 replies; 4+ messages in thread
From: Maksim Salau @ 2017-04-23 17:18 UTC (permalink / raw)
To: Fabio Estevam
Cc: Wolfgang Grandegger, Marc Kleine-Budde, Maximilian Schneider,
Hubert Denkmair, Wolfram Sang, Ethan Zonca, linux-can,
netdev@vger.kernel.org
> > + struct gs_identify_mode *imode = NULL;
>
> No need to assign imode to NULL here.
Thanks, Fabio.
I'll fix this in v2.
Maksim
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2] net: can: usb: gs_usb: Fix buffer on stack
2017-04-22 17:30 ` Fabio Estevam
2017-04-23 17:18 ` Maksim Salau
@ 2017-04-23 17:31 ` Maksim Salau
1 sibling, 0 replies; 4+ messages in thread
From: Maksim Salau @ 2017-04-23 17:31 UTC (permalink / raw)
To: Wolfgang Grandegger, Marc Kleine-Budde, Maximilian Schneider,
Hubert Denkmair, Wolfram Sang, Ethan Zonca, linux-can, netdev,
Fabio Estevam
Cc: Maksim Salau
Allocate buffers on HEAP instead of STACK for local structures
that are to be sent using usb_control_msg().
Signed-off-by: Maksim Salau <maksim.salau@gmail.com>
---
Changes in v2:
dropped redundant assignment.
drivers/net/can/usb/gs_usb.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/drivers/net/can/usb/gs_usb.c b/drivers/net/can/usb/gs_usb.c
index 300349f..eecee7f 100644
--- a/drivers/net/can/usb/gs_usb.c
+++ b/drivers/net/can/usb/gs_usb.c
@@ -739,13 +739,18 @@ static const struct net_device_ops gs_usb_netdev_ops = {
static int gs_usb_set_identify(struct net_device *netdev, bool do_identify)
{
struct gs_can *dev = netdev_priv(netdev);
- struct gs_identify_mode imode;
+ struct gs_identify_mode *imode;
int rc;
+ imode = kmalloc(sizeof(*imode), GFP_KERNEL);
+
+ if (!imode)
+ return -ENOMEM;
+
if (do_identify)
- imode.mode = GS_CAN_IDENTIFY_ON;
+ imode->mode = GS_CAN_IDENTIFY_ON;
else
- imode.mode = GS_CAN_IDENTIFY_OFF;
+ imode->mode = GS_CAN_IDENTIFY_OFF;
rc = usb_control_msg(interface_to_usbdev(dev->iface),
usb_sndctrlpipe(interface_to_usbdev(dev->iface),
@@ -755,10 +760,12 @@ static int gs_usb_set_identify(struct net_device *netdev, bool do_identify)
USB_RECIP_INTERFACE,
dev->channel,
0,
- &imode,
- sizeof(imode),
+ imode,
+ sizeof(*imode),
100);
+ kfree(imode);
+
return (rc > 0) ? 0 : rc;
}
--
2.9.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-04-23 17:32 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-04-22 16:56 [PATCH] net: can: usb: gs_usb: Fix buffer on stack Maksim Salau
2017-04-22 17:30 ` Fabio Estevam
2017-04-23 17:18 ` Maksim Salau
2017-04-23 17:31 ` [PATCH v2] " Maksim Salau
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox