Hi,
this driver is doing DMA to the stack. Here's the obvious fix.
Regards
Oliver
You can import this changeset into BK by piping this whole message to:
'| bk receive [path to repository]' or apply the patch as usual.
===================================================================
[EMAIL PROTECTED], 2004-03-22 23:23:33+01:00, [EMAIL PROTECTED]
- DMA on stack
ftdi_sio.c | 44 +++++++++++++++++++++++++++++++++++---------
1 files changed, 35 insertions(+), 9 deletions(-)
diff -Nru a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
--- a/drivers/usb/serial/ftdi_sio.c Mon Mar 22 23:25:09 2004
+++ b/drivers/usb/serial/ftdi_sio.c Mon Mar 22 23:25:09 2004
@@ -789,8 +789,14 @@
static int set_rts(struct usb_serial_port *port, int high_or_low)
{
struct ftdi_private *priv = usb_get_serial_port_data(port);
- char buf[1];
+ char *buf;
unsigned ftdi_high_or_low;
+ int rv;
+
+ buf = kmalloc(1, GFP_NOIO);
+ if (!buf)
+ return -ENOMEM;
+
if (high_or_low) {
ftdi_high_or_low = FTDI_SIO_SET_RTS_HIGH;
priv->last_dtr_rts |= TIOCM_RTS;
@@ -798,20 +804,29 @@
ftdi_high_or_low = FTDI_SIO_SET_RTS_LOW;
priv->last_dtr_rts &= ~TIOCM_RTS;
}
- return(usb_control_msg(port->serial->dev,
+ rv = usb_control_msg(port->serial->dev,
usb_sndctrlpipe(port->serial->dev, 0),
FTDI_SIO_SET_MODEM_CTRL_REQUEST,
FTDI_SIO_SET_MODEM_CTRL_REQUEST_TYPE,
ftdi_high_or_low, 0,
- buf, 0, WDR_TIMEOUT));
+ buf, 0, WDR_TIMEOUT);
+
+ kfree(buf);
+ return rv;
}
static int set_dtr(struct usb_serial_port *port, int high_or_low)
{
struct ftdi_private *priv = usb_get_serial_port_data(port);
- char buf[1];
+ char *buf;
unsigned ftdi_high_or_low;
+ int rv;
+
+ buf = kmalloc(1, GFP_NOIO);
+ if (!buf)
+ return -ENOMEM;
+
if (high_or_low) {
ftdi_high_or_low = FTDI_SIO_SET_DTR_HIGH;
priv->last_dtr_rts |= TIOCM_DTR;
@@ -819,12 +834,15 @@
ftdi_high_or_low = FTDI_SIO_SET_DTR_LOW;
priv->last_dtr_rts &= ~TIOCM_DTR;
}
- return(usb_control_msg(port->serial->dev,
+ rv = usb_control_msg(port->serial->dev,
usb_sndctrlpipe(port->serial->dev, 0),
FTDI_SIO_SET_MODEM_CTRL_REQUEST,
FTDI_SIO_SET_MODEM_CTRL_REQUEST_TYPE,
ftdi_high_or_low, 0,
- buf, 0, WDR_TIMEOUT));
+ buf, 0, WDR_TIMEOUT);
+
+ kfree(buf);
+ return rv;
}
@@ -833,21 +851,29 @@
static int change_speed(struct usb_serial_port *port)
{
- char buf[1];
+ char *buf;
__u16 urb_value;
__u16 urb_index;
__u32 urb_index_value;
+ int rv;
+
+ buf = kmalloc(1, GFP_NOIO);
+ if (!buf)
+ return -ENOMEM;
urb_index_value = get_ftdi_divisor(port);
urb_value = (__u16)urb_index_value;
urb_index = (__u16)(urb_index_value >> 16);
- return (usb_control_msg(port->serial->dev,
+ rv = usb_control_msg(port->serial->dev,
usb_sndctrlpipe(port->serial->dev, 0),
FTDI_SIO_SET_BAUDRATE_REQUEST,
FTDI_SIO_SET_BAUDRATE_REQUEST_TYPE,
urb_value, urb_index,
- buf, 0, 100) < 0);
+ buf, 0, 100);
+
+ kfree(buf);
+ return rv;
}
===================================================================
This BitKeeper patch contains the following changesets:
1.1187
## Wrapped with gzip_uu ##
begin 664 bkpatch15197
M'XL(`,5G7T```[6576^;,!2&K_&O.%-OTC6`;<Q7JE3MFJRKMC11UFH7ZQ11
M<!(4P)6!3)WX\3.PI8NVI>W:&4L'V3X?S_$KV(.KG,N>)I)XS27:@W<B+WJ:
M>D_+B&=&QLM5F1I"+M3>5`BU9RY%RLW6P;R4G.=F$F=EKE/#1NK4)"C"):C-
MO*<1P]JL%'>WO*=-AV=7'TZF"/7[<+H,[EMAIL PROTECTED](HOPX*):)R(Q"
M!EF>\B(P0I%6FZ,5Q9BJQR:NA6VG(@YF;A62B)"`$1YARCR'H;:\XS]P;(=B
MV*(4N]3%K'*P17PT`&([EMAIL PROTECTED](<Q_#TT'!#0,7H#+\MR
MBD*HAPZ#T0F(#/(B"%?H/=B^9_EH<M]'I#]Q((0#C(X>*#B2-7%NEOF-J=02
M!XDY+Z)XEL?""'^!8)BX%?9=YE3<(J[M^XX74!)Y--K1M8?#-Y=4#]NN&&6,
M-NK9Z?:PHEX`"J5QN`R2621NY+>[+%_%QVD0UM$_+R1??'D,&:4NQ40EJBC#
MC#7R<_"V^&C/MA\A/LL&W?\OZOM->>TMC$&77YNIE#39?2'_(,V!ZU,@Z+PU
MFFJUA-<WY?RP7K+`05J<%2#7ATA#FEJ'/JS2($E$V"%=.'L[F5V,S\?[:CN>
M0^>5.K&/-$WRHI09Z,[EMAIL PROTECTED]''B9UGM9H<JT"*899*+)"BF26YHO.K9"%
M?M12Z4<17W=K-Z=U<X"IP!JT0^7I`N["I\%T=GD^&HZO+E4-UTA;S=7'LE.7
MH;+^**.N?N`1JPG4F"U.C["7XKQ6>[EMAIL PROTECTED];5ACMCDM'^Q[
MSNMG<`X\9C=9&O,$2ALW;LIL*'\B$HQWHVU^<N&2AZN\3/N1Q_$\BD+T';'\
&-"IB!P``
`
end
-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel