From: Samuel O. <sa...@so...> - 2007-12-16 15:47:37
|
Hi Dave, Here goes a batch of 5 IrDA patches against your latest net-2.6 tree. Cheers, Samuel. -- |
From: Samuel O. <sa...@so...> - 2007-12-16 15:47:35
|
While testing the mcs7780 based IrDA USB dongle I've stumbled upon memory leak in irlmp_unregister_link(). Hashbin for lsaps is created in irlmp_register_link and should probably be freed in irlmp_unregister_link(). Signed-off-by: Hinko Kocevar <hin...@ce...> Signed-off-by: Samuel Ortiz <sa...@so...> --- net/irda/irlmp.c | 1 + 1 file changed, 1 insertion(+) Index: net-2.6/net/irda/irlmp.c =================================================================== --- net-2.6.orig/net/irda/irlmp.c 2007-11-25 05:54:02.000000000 +0100 +++ net-2.6/net/irda/irlmp.c 2007-11-25 07:12:13.000000000 +0100 @@ -353,6 +353,7 @@ /* Final cleanup */ del_timer(&link->idle_timer); link->magic = 0; + hashbin_delete(link->lsaps, (FREE_FUNC) __irlmp_close_lsap); kfree(link); } } -- |
From: David M. <da...@da...> - 2007-12-16 22:09:10
|
From: Samuel Ortiz <sa...@so...> Date: Mon, 17 Dec 2007 00:46:51 +0100 > While testing the mcs7780 based IrDA USB dongle I've stumbled upon > memory leak in irlmp_unregister_link(). Hashbin for lsaps is created in > irlmp_register_link and should probably be freed in irlmp_unregister_link(). > > Signed-off-by: Hinko Kocevar <hin...@ce...> > Signed-off-by: Samuel Ortiz <sa...@so...> Applied. |
From: Samuel O. <sa...@so...> - 2007-12-16 15:47:35
|
While testing the mcs7780 based IrDA USB dongle I've stumbled upon memory leak in mcs_net_close(). Patch below fixes it. From: Hinko Kocevar <hin...@ce...> Signed-off-by: Hinko Kocevar <hin...@ce...> Signed-off-by: Samuel Ortiz <sa...@so...> --- drivers/net/irda/mcs7780.c | 2 ++ 1 file changed, 2 insertions(+) Index: net-2.6/drivers/net/irda/mcs7780.c =================================================================== --- net-2.6.orig/drivers/net/irda/mcs7780.c 2007-11-25 05:53:43.000000000 +0100 +++ net-2.6/drivers/net/irda/mcs7780.c 2007-11-25 07:12:11.000000000 +0100 @@ -677,6 +677,8 @@ /* Stop transmit processing */ netif_stop_queue(netdev); + kfree_skb(mcs->rx_buff.skb); + /* kill and free the receive and transmit URBs */ usb_kill_urb(mcs->rx_urb); usb_free_urb(mcs->rx_urb); -- |
From: David M. <da...@da...> - 2007-12-16 22:08:35
|
From: Samuel Ortiz <sa...@so...> Date: Mon, 17 Dec 2007 00:46:50 +0100 > While testing the mcs7780 based IrDA USB dongle I've stumbled upon > memory leak in mcs_net_close(). Patch below fixes it. > > From: Hinko Kocevar <hin...@ce...> > Signed-off-by: Hinko Kocevar <hin...@ce...> > Signed-off-by: Samuel Ortiz <sa...@so...> Applied. |
From: Samuel O. <sa...@so...> - 2007-12-16 15:47:36
|
It seems to me that irda_usb_net_open() must set self->netopen under spinlock or disconnect() may fail to kill all URBs, if it is called while an interface is opened. From: Oliver Neukum <on...@su...> Signed-off-by: Oliver Neukum <on...@su...> Signed-off-by: Samuel Ortiz <sa...@so...> --- drivers/net/irda/irda-usb.c | 5 +++++ 1 file changed, 5 insertions(+) Index: net-2.6/drivers/net/irda/irda-usb.c =================================================================== --- net-2.6.orig/drivers/net/irda/irda-usb.c 2007-11-25 05:53:43.000000000 +0100 +++ net-2.6/drivers/net/irda/irda-usb.c 2007-11-25 07:12:09.000000000 +0100 @@ -1168,6 +1168,7 @@ static int irda_usb_net_open(struct net_device *netdev) { struct irda_usb_cb *self; + unsigned long flags; char hwname[16]; int i; @@ -1177,13 +1178,16 @@ self = (struct irda_usb_cb *) netdev->priv; IRDA_ASSERT(self != NULL, return -1;); + spin_lock_irqsave(&self->lock, flags); /* Can only open the device if it's there */ if(!self->present) { + spin_unlock_irqrestore(&self->lock, flags); IRDA_WARNING("%s(), device not present!\n", __FUNCTION__); return -1; } if(self->needspatch) { + spin_unlock_irqrestore(&self->lock, flags); IRDA_WARNING("%s(), device needs patch\n", __FUNCTION__) ; return -EIO ; } @@ -1198,6 +1202,7 @@ /* To do *before* submitting Rx urbs and starting net Tx queue * Jean II */ self->netopen = 1; + spin_unlock_irqrestore(&self->lock, flags); /* * Now that everything should be initialized properly, -- |
From: David M. <da...@da...> - 2007-12-16 22:07:52
|
From: Samuel Ortiz <sa...@so...> Date: Mon, 17 Dec 2007 00:46:49 +0100 > It seems to me that irda_usb_net_open() must set self->netopen > under spinlock or disconnect() may fail to kill all URBs, if it is called > while an interface is opened. > > From: Oliver Neukum <on...@su...> > Signed-off-by: Oliver Neukum <on...@su...> > Signed-off-by: Samuel Ortiz <sa...@so...> Applied, thanks. |
From: Samuel O. <sa...@so...> - 2007-12-16 15:47:36
|
This patch fixes: CHECK /home/kernel/src/net/irda/parameters.c /home/kernel/src/net/irda/parameters.c:466:2: warning: Using plain integer as NULL pointer /home/kernel/src/net/irda/parameters.c:520:2: warning: Using plain integer as NULL pointer /home/kernel/src/net/irda/parameters.c:573:2: warning: Using plain integer as NULL pointer From: Richard Knutsson <ric...@st...> Signed-off-by: Richard Knutsson <ric...@st...> Signed-off-by: Samuel Ortiz <sa...@so...> Cc: Andrew Morton <ak...@li...> --- net/irda/parameters.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) Index: net-2.6/net/irda/parameters.c =================================================================== --- net-2.6.orig/net/irda/parameters.c 2007-11-25 05:54:02.000000000 +0100 +++ net-2.6/net/irda/parameters.c 2007-11-26 10:20:38.000000000 +0100 @@ -463,7 +463,7 @@ int n = 0; IRDA_ASSERT(buf != NULL, return ret;); - IRDA_ASSERT(info != 0, return ret;); + IRDA_ASSERT(info != NULL, return ret;); pi_minor = pi & info->pi_mask; pi_major = pi >> info->pi_major_offset; @@ -517,7 +517,7 @@ int n = 0; IRDA_ASSERT(buf != NULL, return ret;); - IRDA_ASSERT(info != 0, return ret;); + IRDA_ASSERT(info != NULL, return ret;); pi_minor = buf[n] & info->pi_mask; pi_major = buf[n] >> info->pi_major_offset; @@ -570,7 +570,7 @@ int n = 0; IRDA_ASSERT(buf != NULL, return ret;); - IRDA_ASSERT(info != 0, return ret;); + IRDA_ASSERT(info != NULL, return ret;); /* * Parse all parameters. Each parameter must be at least two bytes -- |
From: David M. <da...@da...> - 2007-12-16 22:11:08
|
From: Samuel Ortiz <sa...@so...> Date: Mon, 17 Dec 2007 00:46:53 +0100 > This patch fixes: > CHECK /home/kernel/src/net/irda/parameters.c > /home/kernel/src/net/irda/parameters.c:466:2: warning: Using plain integer as NULL pointer > /home/kernel/src/net/irda/parameters.c:520:2: warning: Using plain integer as NULL pointer > /home/kernel/src/net/irda/parameters.c:573:2: warning: Using plain integer as NULL pointer > > From: Richard Knutsson <ric...@st...> > Signed-off-by: Richard Knutsson <ric...@st...> > Signed-off-by: Samuel Ortiz <sa...@so...> > Cc: Andrew Morton <ak...@li...> Applied. |
From: Samuel O. <sa...@so...> - 2007-12-16 15:47:37
|
The attached patch observes the stir4200 fifo size and will clear the fifo, if the size is increasing, while it should be transmitting bytes From: Olaf Hartmann <ola...@s1...> Signed-off-by: Samuel Ortiz <sa...@so...> --- drivers/net/irda/stir4200.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) Index: net-2.6/drivers/net/irda/stir4200.c =================================================================== --- net-2.6.orig/drivers/net/irda/stir4200.c 2007-11-25 05:53:43.000000000 +0100 +++ net-2.6/drivers/net/irda/stir4200.c 2007-11-26 02:16:12.000000000 +0100 @@ -142,9 +142,6 @@ }; enum StirFifoCtlMask { - FIFOCTL_EOF = 0x80, - FIFOCTL_UNDER = 0x40, - FIFOCTL_OVER = 0x20, FIFOCTL_DIR = 0x10, FIFOCTL_CLR = 0x08, FIFOCTL_EMPTY = 0x04, @@ -594,9 +591,10 @@ { int err; unsigned long count, status; + unsigned long prev_count = 0x1fff; /* Read FIFO status and count */ - for(;;) { + for (;; prev_count = count) { err = read_reg(stir, REG_FIFOCTL, stir->fifo_status, FIFO_REGS_SIZE); if (unlikely(err != FIFO_REGS_SIZE)) { @@ -629,6 +627,10 @@ if (space >= 0 && STIR_FIFO_SIZE - 4 > space + count) return 0; + /* queue confused */ + if (prev_count < count) + break; + /* estimate transfer time for remaining chars */ msleep((count * 8000) / stir->speed); } -- |
From: David M. <da...@da...> - 2007-12-16 22:10:03
|
From: Samuel Ortiz <sa...@so...> Date: Mon, 17 Dec 2007 00:46:52 +0100 > The attached patch observes the stir4200 fifo size and will clear the fifo, if > the size is increasing, while it should be transmitting bytes > > From: Olaf Hartmann <ola...@s1...> > Signed-off-by: Samuel Ortiz <sa...@so...> Applied. |