diff options
13 files changed, 668 insertions, 1 deletions
diff --git a/driver-core.current/fix-setattr-error-handling-in-sysfs-configfs.patch b/driver-core.current/fix-setattr-error-handling-in-sysfs-configfs.patch new file mode 100644 index 00000000000000..4a73ce643539ac --- /dev/null +++ b/driver-core.current/fix-setattr-error-handling-in-sysfs-configfs.patch @@ -0,0 +1,66 @@ +From npiggin@suse.de Thu Jun 3 10:42:47 2010 +From: Nick Piggin <npiggin@suse.de> +Date: Mon, 31 May 2010 17:58:02 +1000 +Subject: fix setattr error handling in sysfs, configfs +To: linux-fsdevel@vger.kernel.org, Greg Kroah-Hartman <gregkh@suse.de>, Joel Becker <joel.becker@oracle.com> +Message-ID: <20100531075802.GD9453@laptop> +Content-Disposition: inline + + +sysfs and configfs setattr functions have error cases after the generic inode's +attributes have been changed. Fix consistency by changing the generic inode +attributes only when it is guaranteed to succeed. + +Signed-off-by: Nick Piggin <npiggin@suse.de> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + fs/configfs/inode.c | 9 ++++----- + fs/sysfs/inode.c | 6 ++++-- + 2 files changed, 8 insertions(+), 7 deletions(-) + +--- a/fs/configfs/inode.c ++++ b/fs/configfs/inode.c +@@ -72,10 +72,6 @@ int configfs_setattr(struct dentry * den + if (!sd) + return -EINVAL; + +- error = simple_setattr(dentry, iattr); +- if (error) +- return error; +- + sd_iattr = sd->s_iattr; + if (!sd_iattr) { + /* setting attributes for the first time, allocate now */ +@@ -89,9 +85,12 @@ int configfs_setattr(struct dentry * den + sd_iattr->ia_atime = sd_iattr->ia_mtime = sd_iattr->ia_ctime = CURRENT_TIME; + sd->s_iattr = sd_iattr; + } +- + /* attributes were changed atleast once in past */ + ++ error = simple_setattr(dentry, iattr); ++ if (error) ++ return error; ++ + if (ia_valid & ATTR_UID) + sd_iattr->ia_uid = iattr->ia_uid; + if (ia_valid & ATTR_GID) +--- a/fs/sysfs/inode.c ++++ b/fs/sysfs/inode.c +@@ -117,11 +117,13 @@ int sysfs_setattr(struct dentry *dentry, + if (error) + goto out; + ++ error = sysfs_sd_setattr(sd, iattr); ++ if (error) ++ goto out; ++ + /* this ignores size changes */ + generic_setattr(inode, iattr); + +- error = sysfs_sd_setattr(sd, iattr); +- + out: + mutex_unlock(&sysfs_mutex); + return error; @@ -10,6 +10,7 @@ gregkh/gkh-version.patch ################################# driver-core.current/lib-kobject_uevent.c-fix-conig_net-n-warning.patch driver-core.current/kobject-free-memory-if-netlink_kernel_create-fails.patch +driver-core.current/fix-setattr-error-handling-in-sysfs-configfs.patch ################################# # TTY patches for 2.6.35 @@ -22,6 +23,7 @@ tty.current/tty-n_gsm-potential-double-lock.patch tty.current/altera_uart-don-t-take-spinlock-in-already-protected-functions.patch tty.current/altera_uart-simplify-altera_uart_console_putc.patch tty.current/tty-fix-a-little-bug-in-scrup-vt.c.patch +tty.current/serial-altera_uart-proper-section-for-altera_uart_remove.patch ################################# # USB patches for 2.6.35 @@ -36,6 +38,11 @@ usb.current/usb-s3c_hsotg-define-usb_gadget_dualspeed-in-kconfig.patch usb.current/usb-s3c-hsotg-ensure-tx-fifo-addresses-setup-when-initialising-fifos.patch usb.current/usb-s3c-hsotg-softdisconnect-minimum-3ms.patch usb.current/usb-s3c-hsotg-ensure-fifos-are-fully-flushed-after-layout.patch +usb.current/usb-ftdi_sio-fix-dtr-rts-line-modes.patch +usb.current/usb-cdc-acm-fix-resource-reclaim-in-error-path-of-acm_probe.patch +usb.current/usb-fix-ehci_hcd-build-failure-when-both-generic-of-and-xilinx-is-selected.patch +usb.current/usb-serial-digi_acceleport-eliminate-a-null-pointer-dereference.patch + ################################# # Staging patches for 2.6.35 @@ -59,6 +66,12 @@ staging.current/staging-batman-adv-don-t-allocate-icmp-packet-with-gfp_kernel.pa staging.current/staging-adis16255-fix-typo-in-kconfig.patch staging.current/staging-adis16255-add-proper-section-markings-to-hotplug-funcs.patch staging.current/staging-iio-utils-fix-memory-overflow-for-dynamically-allocateded-memory-to-hold-filename.patch +staging.current/staging-phison-depends-on-ata_bmdma.patch +staging.current/staging-wlags49_h2-wlags49_h25-fixed-kconfig-dependencies.patch +staging.current/staging-comedi-fixing-ni_labpc-to-mite-dependancy.patch +staging.current/staging-comedi-correct-parameter-gainlkup-for-daqcard-6024e-in-driver-ni_mio_cs.c.patch +staging.current/staging-use-gfp_atomic-when-a-lock-is-held.patch +staging.current/staging-eliminate-a-null-pointer-dereference.patch ##################################################################### @@ -81,4 +94,3 @@ staging.current/staging-iio-utils-fix-memory-overflow-for-dynamically-allocatede # staging stuff is now in the staging-next tree on git.kernel.org - diff --git a/staging.current/staging-comedi-correct-parameter-gainlkup-for-daqcard-6024e-in-driver-ni_mio_cs.c.patch b/staging.current/staging-comedi-correct-parameter-gainlkup-for-daqcard-6024e-in-driver-ni_mio_cs.c.patch new file mode 100644 index 00000000000000..6051d9a11b2d0e --- /dev/null +++ b/staging.current/staging-comedi-correct-parameter-gainlkup-for-daqcard-6024e-in-driver-ni_mio_cs.c.patch @@ -0,0 +1,33 @@ +From homuth-rosemann@cryptomys.de Thu Jun 3 10:37:32 2010 +From: Martin Homuth-Rosemann <homuth-rosemann@cryptomys.de> +Date: Mon, 31 May 2010 22:33:04 +0200 +Subject: Staging: comedi - correct parameter gainlkup for DAQCard-6024E in driver ni_mio_cs.c +To: Greg Kroah-Hartman <gregkh@suse.de> +Cc: linux-kernel@vger.kernel.org +Message-ID: <4C041D00.6070708@cryptomys.de> + +From: Martin Homuth-Rosemann <homuth-rosemann@gmx.net> + +Correct at least one of the incorrect specs for a national instrument +data acquisition card DAQCard-6024E. This card has only four different +gain settings (+-10V, +-5V, +-0.5V, +-0.05V). + +Signed-off-by: Martin Homuth-Rosemann <homuth-rosemann@gmx.net> +Cc: stable <stable@kernel.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/staging/comedi/drivers/ni_mio_cs.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/staging/comedi/drivers/ni_mio_cs.c ++++ b/drivers/staging/comedi/drivers/ni_mio_cs.c +@@ -123,7 +123,7 @@ static const struct ni_board_struct ni_b + .adbits = 12, + .ai_fifo_depth = 1024, + .alwaysdither = 0, +- .gainlkup = ai_gain_16, ++ .gainlkup = ai_gain_4, + .ai_speed = 5000, + .n_aochan = 2, + .aobits = 12, diff --git a/staging.current/staging-comedi-fixing-ni_labpc-to-mite-dependancy.patch b/staging.current/staging-comedi-fixing-ni_labpc-to-mite-dependancy.patch new file mode 100644 index 00000000000000..f025d10e2eb29c --- /dev/null +++ b/staging.current/staging-comedi-fixing-ni_labpc-to-mite-dependancy.patch @@ -0,0 +1,30 @@ +From linux@blala.de Thu Jun 3 10:33:50 2010 +From: Alexander Kurz <linux@blala.de> +Date: Thu, 3 Jun 2010 15:50:24 +0400 (MSD) +Subject: Staging: comedi: fixing ni_labpc to mite dependancy +To: Randy Dunlap <randy.dunlap@oracle.com> +Cc: Stephen Rothwell <sfr@canb.auug.org.au>, Alexander Kurz <linux@kbdbabel.org>, linux-next@vger.kernel.org, LKML <linux-kernel@vger.kernel.org>, gregkh@suse.de +Message-ID: <alpine.DEB.1.10.1006031545010.23736@blala.de> + + +the dependancy of ni_labpc on mite was missing, + +Signed-off-by: Alexander Kurz <linux@kbdbabel.org> +Acked-by: Randy Dunlap <randy.dunlap@oracle.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +index 0aa2b0d..79f5f2e 100644 +--- + drivers/staging/comedi/Kconfig | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/staging/comedi/Kconfig ++++ b/drivers/staging/comedi/Kconfig +@@ -1281,6 +1281,7 @@ config COMEDI_NI_TIO + + config COMEDI_NI_LABPC + tristate "NI Lab-PC and compatibles ISA and PCI support" ++ depends on COMEDI_MITE + select COMEDI_8255 + select COMEDI_FC + default N diff --git a/staging.current/staging-eliminate-a-null-pointer-dereference.patch b/staging.current/staging-eliminate-a-null-pointer-dereference.patch new file mode 100644 index 00000000000000..c8294cbdc6029b --- /dev/null +++ b/staging.current/staging-eliminate-a-null-pointer-dereference.patch @@ -0,0 +1,66 @@ +From julia@diku.dk Thu Jun 3 10:50:26 2010 +From: Julia Lawall <julia@diku.dk> +Date: Thu, 27 May 2010 14:37:19 +0200 (CEST) +Subject: Staging: Eliminate a NULL pointer dereference +To: Greg Kroah-Hartman <gregkh@suse.de>, devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org +Message-ID: <Pine.LNX.4.64.1005271437010.5422@ask.diku.dk> + + +From: Julia Lawall <julia@diku.dk> + +Eliminate a NULL or near NULL pointer dereference. + +A simplified version of the semantic match that finds this problem is as +follows: (http://coccinelle.lip6.fr/) + +// <smpl> +@r exists@ +expression E,E1; +identifier f; +statement S1,S2,S3; +@@ + +if ((E == NULL && ...) || ...) +{ + ... when != if (...) S1 else S2 + when != E = E1 +* E->f + ... when any + return ...; +} +else S3 +// </smpl> + +Signed-off-by: Julia Lawall <julia@diku.dk> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/staging/comedi/drivers/usbdux.c | 3 +-- + drivers/staging/dt3155/allocator.c | 4 +--- + 2 files changed, 2 insertions(+), 5 deletions(-) + +--- a/drivers/staging/comedi/drivers/usbdux.c ++++ b/drivers/staging/comedi/drivers/usbdux.c +@@ -351,8 +351,7 @@ static int usbdux_ai_stop(struct usbduxs + int ret = 0; + + if (!this_usbduxsub) { +- dev_err(&this_usbduxsub->interface->dev, +- "comedi?: usbdux_ai_stop: this_usbduxsub=NULL!\n"); ++ pr_err("comedi?: usbdux_ai_stop: this_usbduxsub=NULL!\n"); + return -EFAULT; + } + dev_dbg(&this_usbduxsub->interface->dev, "comedi: usbdux_ai_stop\n"); +--- a/drivers/staging/dt3155/allocator.c ++++ b/drivers/staging/dt3155/allocator.c +@@ -176,9 +176,7 @@ int allocator_free_dma(unsigned long add + prev = ptr; ptr = ptr->next; + + if (!ptr) { +- printk(KERN_ERR ALL_MSG +- "free_dma(0x%08lx) but add. not allocated\n", +- ptr->address); ++ pr_err(ALL_MSG "free_dma but add. not allocated\n"); + return -EINVAL; + } + PDEBUGG("freeing: %08lx (%li) next %08lx\n", ptr->address, ptr->size, diff --git a/staging.current/staging-phison-depends-on-ata_bmdma.patch b/staging.current/staging-phison-depends-on-ata_bmdma.patch new file mode 100644 index 00000000000000..64ddad524eff27 --- /dev/null +++ b/staging.current/staging-phison-depends-on-ata_bmdma.patch @@ -0,0 +1,36 @@ +From randy.dunlap@oracle.com Tue Jun 1 14:14:50 2010 +From: Randy Dunlap <randy.dunlap@oracle.com> +Date: Wed, 26 May 2010 10:30:02 -0700 +Subject: Staging: phison: depends on ATA_BMDMA +To: Stephen Rothwell <sfr@canb.auug.org.au>, gregkh@suse.de +Cc: linux-next@vger.kernel.org, LKML <linux-kernel@vger.kernel.org>, evan_ko@phison.com +Message-ID: <20100526103002.ac2c6703.randy.dunlap@oracle.com> + + +From: Randy Dunlap <randy.dunlap@oracle.com> + +phison uses interfaces and data that are built only when +ATA_BMDMA is enabled, so it should depend on that symbol. + +drivers/staging/phison/phison.c:43: error: implicit declaration of function 'ATA_BMDMA_SHT' +drivers/staging/phison/phison.c:43: error: initializer element is not constant +drivers/staging/phison/phison.c:43: error: (near initialization for 'phison_sht.module') +drivers/staging/phison/phison.c:47: error: 'ata_bmdma_port_ops' undeclared here (not in a function) + +Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com> +Cc: evan_ko@phison.com +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/staging/phison/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/staging/phison/Kconfig ++++ b/drivers/staging/phison/Kconfig +@@ -1,5 +1,5 @@ + config IDE_PHISON + tristate "PCIE ATA PS5000 IDE support" +- depends on PCI && ATA && ATA_SFF ++ depends on PCI && ATA && ATA_SFF && ATA_BMDMA + ---help--- + This is an experimental driver for PS5000 IDE driver. diff --git a/staging.current/staging-use-gfp_atomic-when-a-lock-is-held.patch b/staging.current/staging-use-gfp_atomic-when-a-lock-is-held.patch new file mode 100644 index 00000000000000..4df408e26614d7 --- /dev/null +++ b/staging.current/staging-use-gfp_atomic-when-a-lock-is-held.patch @@ -0,0 +1,90 @@ +From julia@diku.dk Thu Jun 3 10:43:48 2010 +From: Julia Lawall <julia@diku.dk> +Date: Sun, 30 May 2010 22:27:46 +0200 (CEST) +Subject: staging: Use GFP_ATOMIC when a lock is held +To: Greg Kroah-Hartman <gregkh@suse.de>, devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org +Message-ID: <Pine.LNX.4.64.1005302227290.19253@ask.diku.dk> + + +From: Julia Lawall <julia@diku.dk> + +In each case, the containing function is only called from one place, where +a spin lock is held. + +The semantic patch that makes this change is as follows: +(http://coccinelle.lip6.fr/) + +// <smpl> +@gfp exists@ +identifier fn; +position p; +@@ + +fn(...) { +... when != spin_unlock + when any + GFP_KERNEL@p + ... when any +} + +@locked@ +identifier gfp.fn; +@@ + +spin_lock(...) +... when != spin_unlock +fn(...) + +@depends on locked@ +position gfp.p; +@@ + +- GFP_KERNEL@p ++ GFP_ATOMIC +// </smpl> + +Signed-off-by: Julia Lawall <julia@diku.dk> +Cc: Jonathan Cameron <jic23@cam.ac.uk> +Cc: Marek Lindner <lindner_marek@yahoo.de> +Cc: Martyn Welch <martyn.welch@ge.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/staging/iio/ring_sw.c | 2 +- + drivers/staging/vme/bridges/vme_ca91cx42.c | 2 +- + drivers/staging/vme/bridges/vme_tsi148.c | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +--- a/drivers/staging/iio/ring_sw.c ++++ b/drivers/staging/iio/ring_sw.c +@@ -20,7 +20,7 @@ static inline int __iio_allocate_sw_ring + if ((length == 0) || (bytes_per_datum == 0)) + return -EINVAL; + __iio_update_ring_buffer(&ring->buf, bytes_per_datum, length); +- ring->data = kmalloc(length*ring->buf.bpd, GFP_KERNEL); ++ ring->data = kmalloc(length*ring->buf.bpd, GFP_ATOMIC); + ring->read_p = NULL; + ring->write_p = NULL; + ring->last_written_p = NULL; +--- a/drivers/staging/vme/bridges/vme_ca91cx42.c ++++ b/drivers/staging/vme/bridges/vme_ca91cx42.c +@@ -523,7 +523,7 @@ static int ca91cx42_alloc_resource(struc + } + + if (image->bus_resource.name == NULL) { +- image->bus_resource.name = kmalloc(VMENAMSIZ+3, GFP_KERNEL); ++ image->bus_resource.name = kmalloc(VMENAMSIZ+3, GFP_ATOMIC); + if (image->bus_resource.name == NULL) { + dev_err(ca91cx42_bridge->parent, "Unable to allocate " + "memory for resource name\n"); +--- a/drivers/staging/vme/bridges/vme_tsi148.c ++++ b/drivers/staging/vme/bridges/vme_tsi148.c +@@ -828,7 +828,7 @@ static int tsi148_alloc_resource(struct + return 0; + + if (image->bus_resource.name == NULL) { +- image->bus_resource.name = kmalloc(VMENAMSIZ+3, GFP_KERNEL); ++ image->bus_resource.name = kmalloc(VMENAMSIZ+3, GFP_ATOMIC); + if (image->bus_resource.name == NULL) { + dev_err(tsi148_bridge->parent, "Unable to allocate " + "memory for resource name\n"); diff --git a/staging.current/staging-wlags49_h2-wlags49_h25-fixed-kconfig-dependencies.patch b/staging.current/staging-wlags49_h2-wlags49_h25-fixed-kconfig-dependencies.patch new file mode 100644 index 00000000000000..de8b43fbd543fe --- /dev/null +++ b/staging.current/staging-wlags49_h2-wlags49_h25-fixed-kconfig-dependencies.patch @@ -0,0 +1,61 @@ +From henk.de.groot@hetnet.nl Thu Jun 3 10:33:12 2010 +From: Henk de Groot <henk.de.groot@hetnet.nl> +Date: Wed, 02 Jun 2010 21:30:00 +0200 +Subject: Staging: wlags49_h2, wlags49_h25: fixed Kconfig dependencies +To: Greg Kroah-Hartman <gregkh@suse.de> +Message-ID: <4C06B138.2050608@hetnet.nl> + +Fixes Kconfig so the wlags49_h2 and wlags49_h25 drivers can be +selected from menuconfig without having to select another WLAN +driver first. Before it could only be selected when another driver +already selected WIRELESS_EXT. Also adds WEXT_PRIV on which +the driver also depends. + +Align help text in Kconfig. + +Signed-off-by: Henk de Groot <pe1dnn@amsat.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/staging/wlags49_h2/Kconfig | 12 +++++++----- + drivers/staging/wlags49_h25/Kconfig | 12 +++++++----- + 2 files changed, 14 insertions(+), 10 deletions(-) + +--- a/drivers/staging/wlags49_h2/Kconfig ++++ b/drivers/staging/wlags49_h2/Kconfig +@@ -1,9 +1,11 @@ + config WLAGS49_H2 + tristate "Agere Systems HERMES II Wireless PC Card Model 0110" +- depends on WLAN && WIRELESS_EXT && PCMCIA ++ depends on WLAN && PCMCIA ++ select WIRELESS_EXT + select WEXT_SPY ++ select WEXT_PRIV + ---help--- +- Driver for wireless cards using Agere's HERMES II chipset +- which are identified with Manufacture ID: 0156,0003 +- The software is a modified version of wl_lkm_722_abg.tar.gz +- from the Agere Systems website, addapted for Ubuntu 9.04. ++ Driver for wireless cards using Agere's HERMES II chipset ++ which are identified with Manufacture ID: 0156,0003 ++ The software is a modified version of wl_lkm_722_abg.tar.gz ++ from the Agere Systems website, addapted for Ubuntu 9.04. +--- a/drivers/staging/wlags49_h25/Kconfig ++++ b/drivers/staging/wlags49_h25/Kconfig +@@ -1,9 +1,11 @@ + config WLAGS49_H25 + tristate "Linksys HERMES II.5 WCF54G_Wireless-G_CompactFlash_Card" +- depends on WLAN && WIRELESS_EXT && PCMCIA ++ depends on WLAN && PCMCIA ++ select WIRELESS_EXT + select WEXT_SPY ++ select WEXT_PRIV + ---help--- +- Driver for wireless cards using Agere's HERMES II.5 chipset +- which are identified with Manufacture ID: 0156,0004 +- The software is a modified version of wl_lkm_722_abg.tar.gz +- from the Agere Systems website, addapted for Ubuntu 9.04. ++ Driver for wireless cards using Agere's HERMES II.5 chipset ++ which are identified with Manufacture ID: 0156,0004 ++ The software is a modified version of wl_lkm_722_abg.tar.gz ++ from the Agere Systems website, addapted for Ubuntu 9.04. diff --git a/tty.current/serial-altera_uart-proper-section-for-altera_uart_remove.patch b/tty.current/serial-altera_uart-proper-section-for-altera_uart_remove.patch new file mode 100644 index 00000000000000..707931f45f31eb --- /dev/null +++ b/tty.current/serial-altera_uart-proper-section-for-altera_uart_remove.patch @@ -0,0 +1,29 @@ +From tklauser@distanz.ch Thu Jun 3 10:40:08 2010 +From: Tobias Klauser <tklauser@distanz.ch> +Date: Mon, 31 May 2010 15:01:08 +0200 +Subject: serial: altera_uart: Proper section for altera_uart_remove +To: gregkh@suse.de, linux-kernel@vger.kernel.org +Cc: alan@lxorguk.ukuu.org.uk, akpm@linux-foundation.org, Tobias Klauser <tklauser@distanz.ch> +Message-ID: <1275310868-21071-1-git-send-email-tklauser@distanz.ch> + + +altera_uart_remove should be in .devexit.text + +Signed-off-by: Tobias Klauser <tklauser@distanz.ch> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/serial/altera_uart.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/serial/altera_uart.c ++++ b/drivers/serial/altera_uart.c +@@ -498,7 +498,7 @@ static int __devinit altera_uart_probe(s + return 0; + } + +-static int altera_uart_remove(struct platform_device *pdev) ++static int __devexit altera_uart_remove(struct platform_device *pdev) + { + struct uart_port *port; + int i; diff --git a/usb.current/usb-cdc-acm-fix-resource-reclaim-in-error-path-of-acm_probe.patch b/usb.current/usb-cdc-acm-fix-resource-reclaim-in-error-path-of-acm_probe.patch new file mode 100644 index 00000000000000..982c4f56e0163b --- /dev/null +++ b/usb.current/usb-cdc-acm-fix-resource-reclaim-in-error-path-of-acm_probe.patch @@ -0,0 +1,69 @@ +From axel.lin@gmail.com Thu Jun 3 10:31:15 2010 +From: Axel Lin <axel.lin@gmail.com> +Date: Mon, 31 May 2010 08:04:47 +0800 +Subject: USB: cdc-acm: fix resource reclaim in error path of acm_probe +Cc: Oliver Neukum <oliver@neukum.name>, Greg Kroah-Hartman <gregkh@suse.de>, Alan Cox <alan@linux.intel.com>, Francesco Lavra <francescolavra@interfree.it>, Julian Calaby <julian.calaby@gmail.com> +Message-ID: <1275264287.20355.2.camel@mola> + + +This patch fixes resource reclaim in error path of acm_probe: + +1. In the case of "out of memory (read urbs usb_alloc_urb)\n")", there + is no need to call acm_read_buffers_free(acm) here. Fix it by goto + alloc_fail6 instead of alloc_fail7. +2. In the case of "out of memory (write urbs usb_alloc_urb)", + usb_alloc_urb may fail in any iteration of the for loop. Current + implementation does not properly free allocated snd->urb. Fix it by + goto alloc_fail8 instead of alloc_fail7. +3. In the case of device_create_file(&intf->dev,&dev_attr_iCountryCodeRelDate) + fail, acm->country_codes is kfreed. As a result, device_remove_file + for dev_attr_wCountryCodes will not be executed in acm_disconnect. + Fix it by calling device_remove_file for dev_attr_wCountryCodes + before goto skip_countries. + +Signed-off-by: Axel Lin <axel.lin@gmail.com> +Acked-by: Oliver Neukum <oneukum@suse.de> +Cc: stable <stable@kernel.org> +Signed-off-by: Andrew Morton <akpm@linux-foundation.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/class/cdc-acm.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +--- a/drivers/usb/class/cdc-acm.c ++++ b/drivers/usb/class/cdc-acm.c +@@ -1201,7 +1201,7 @@ made_compressed_probe: + if (rcv->urb == NULL) { + dev_dbg(&intf->dev, + "out of memory (read urbs usb_alloc_urb)\n"); +- goto alloc_fail7; ++ goto alloc_fail6; + } + + rcv->urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; +@@ -1225,7 +1225,7 @@ made_compressed_probe: + if (snd->urb == NULL) { + dev_dbg(&intf->dev, + "out of memory (write urbs usb_alloc_urb)"); +- goto alloc_fail7; ++ goto alloc_fail8; + } + + if (usb_endpoint_xfer_int(epwrite)) +@@ -1264,6 +1264,7 @@ made_compressed_probe: + i = device_create_file(&intf->dev, + &dev_attr_iCountryCodeRelDate); + if (i < 0) { ++ device_remove_file(&intf->dev, &dev_attr_wCountryCodes); + kfree(acm->country_codes); + goto skip_countries; + } +@@ -1300,6 +1301,7 @@ alloc_fail8: + usb_free_urb(acm->wb[i].urb); + alloc_fail7: + acm_read_buffers_free(acm); ++alloc_fail6: + for (i = 0; i < num_rx_buf; i++) + usb_free_urb(acm->ru[i].urb); + usb_free_urb(acm->ctrlurb); diff --git a/usb.current/usb-fix-ehci_hcd-build-failure-when-both-generic-of-and-xilinx-is-selected.patch b/usb.current/usb-fix-ehci_hcd-build-failure-when-both-generic-of-and-xilinx-is-selected.patch new file mode 100644 index 00000000000000..1d217f747df8cd --- /dev/null +++ b/usb.current/usb-fix-ehci_hcd-build-failure-when-both-generic-of-and-xilinx-is-selected.patch @@ -0,0 +1,73 @@ +From grant.likely@secretlab.ca Thu Jun 3 10:32:41 2010 +From: Grant Likely <grant.likely@secretlab.ca> +Date: Wed, 02 Jun 2010 13:53:17 -0600 +Subject: usb: fix ehci_hcd build failure when both generic-OF and xilinx is selected +Cc: Greg Kroah-Hartman <gregkh@suse.de>, Alan Stern <stern@rowland.harvard.edu>, John Linn <john.linn@xilinx.com> +Message-ID: <20100602195213.26683.54599.stgit@angua> + + +This patch fixes the driver to allow both CONFIG_USB_EHCI_HCD_PPC_OF and +CONFIG_USB_ECHI_HCD_XILINX to be selected. + +Signed-off-by: Grant Likely <grant.likely@secretlab.ca> +CC: John Linn <john.linn@xilinx.com> +CC: Alan Stern <stern@rowland.harvard.edu> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/host/ehci-hcd.c | 20 +++++++++++++++++--- + 1 file changed, 17 insertions(+), 3 deletions(-) + +--- a/drivers/usb/host/ehci-hcd.c ++++ b/drivers/usb/host/ehci-hcd.c +@@ -1135,7 +1135,7 @@ MODULE_LICENSE ("GPL"); + + #ifdef CONFIG_XPS_USB_HCD_XILINX + #include "ehci-xilinx-of.c" +-#define OF_PLATFORM_DRIVER ehci_hcd_xilinx_of_driver ++#define XILINX_OF_PLATFORM_DRIVER ehci_hcd_xilinx_of_driver + #endif + + #ifdef CONFIG_PLAT_ORION +@@ -1159,7 +1159,8 @@ MODULE_LICENSE ("GPL"); + #endif + + #if !defined(PCI_DRIVER) && !defined(PLATFORM_DRIVER) && \ +- !defined(PS3_SYSTEM_BUS_DRIVER) && !defined(OF_PLATFORM_DRIVER) ++ !defined(PS3_SYSTEM_BUS_DRIVER) && !defined(OF_PLATFORM_DRIVER) && \ ++ !defined(XILINX_OF_PLATFORM_DRIVER) + #error "missing bus glue for ehci-hcd" + #endif + +@@ -1213,10 +1214,20 @@ static int __init ehci_hcd_init(void) + if (retval < 0) + goto clean3; + #endif ++ ++#ifdef XILINX_OF_PLATFORM_DRIVER ++ retval = of_register_platform_driver(&XILINX_OF_PLATFORM_DRIVER); ++ if (retval < 0) ++ goto clean4; ++#endif + return retval; + ++#ifdef XILINX_OF_PLATFORM_DRIVER ++ /* of_unregister_platform_driver(&XILINX_OF_PLATFORM_DRIVER); */ ++clean4: ++#endif + #ifdef OF_PLATFORM_DRIVER +- /* of_unregister_platform_driver(&OF_PLATFORM_DRIVER); */ ++ of_unregister_platform_driver(&OF_PLATFORM_DRIVER); + clean3: + #endif + #ifdef PS3_SYSTEM_BUS_DRIVER +@@ -1243,6 +1254,9 @@ module_init(ehci_hcd_init); + + static void __exit ehci_hcd_cleanup(void) + { ++#ifdef XILINX_OF_PLATFORM_DRIVER ++ of_unregister_platform_driver(&XILINX_OF_PLATFORM_DRIVER); ++#endif + #ifdef OF_PLATFORM_DRIVER + of_unregister_platform_driver(&OF_PLATFORM_DRIVER); + #endif diff --git a/usb.current/usb-ftdi_sio-fix-dtr-rts-line-modes.patch b/usb.current/usb-ftdi_sio-fix-dtr-rts-line-modes.patch new file mode 100644 index 00000000000000..a90df2c73de4e8 --- /dev/null +++ b/usb.current/usb-ftdi_sio-fix-dtr-rts-line-modes.patch @@ -0,0 +1,49 @@ +From daniel@caiaq.de Thu Jun 3 10:30:30 2010 +From: Daniel Mack <daniel@caiaq.de> +Date: Thu, 3 Jun 2010 13:55:02 +0200 +Subject: USB: ftdi_sio: fix DTR/RTS line modes +Cc: Daniel Mack <daniel@caiaq.de>, Greg Kroah-Hartman <gregkh@suse.de>, Johan Hovold <jhovold@gmail.com>, Alan Cox <alan@linux.intel.com> +Message-ID: <1275566102-5613-1-git-send-email-daniel@caiaq.de> + + +Call set_mctrl() and clear_mctrl() according to the flow control mode +selected. This makes serial communication for FT232 connected devices +work when CRTSCTS is not set. + +This fixes a regression introduced by 4175f3e31 ("tty_port: If we are +opened non blocking we still need to raise the carrier"). This patch +calls the low-level driver's dtr_rts() function which consequently sets +TIOCM_DTR | TIOCM_RTS. A later call to set_termios() without CRTSCTS in +cflags, however, does not reset these bits, and so data is not actually +sent out on the serial wire. + +Signed-off-by: Daniel Mack <daniel@caiaq.de> +Cc: Johan Hovold <jhovold@gmail.com> +Cc: Alan Cox <alan@linux.intel.com> +Cc: stable <stable@kernel.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/serial/ftdi_sio.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/drivers/usb/serial/ftdi_sio.c ++++ b/drivers/usb/serial/ftdi_sio.c +@@ -2005,6 +2005,8 @@ static void ftdi_set_termios(struct tty_ + "urb failed to set to rts/cts flow control\n"); + } + ++ /* raise DTR/RTS */ ++ set_mctrl(port, TIOCM_DTR | TIOCM_RTS); + } else { + /* + * Xon/Xoff code +@@ -2052,6 +2054,8 @@ static void ftdi_set_termios(struct tty_ + } + } + ++ /* lower DTR/RTS */ ++ clear_mctrl(port, TIOCM_DTR | TIOCM_RTS); + } + return; + } diff --git a/usb.current/usb-serial-digi_acceleport-eliminate-a-null-pointer-dereference.patch b/usb.current/usb-serial-digi_acceleport-eliminate-a-null-pointer-dereference.patch new file mode 100644 index 00000000000000..21f73148960d7c --- /dev/null +++ b/usb.current/usb-serial-digi_acceleport-eliminate-a-null-pointer-dereference.patch @@ -0,0 +1,53 @@ +From julia@diku.dk Thu Jun 3 10:49:47 2010 +From: Julia Lawall <julia@diku.dk> +Date: Thu, 27 May 2010 14:32:09 +0200 (CEST) +Subject: USB: serial: digi_acceleport: Eliminate a NULL pointer dereference +To: Peter Berger <pberger@brimson.com>, Al Borchers <alborchers@steinerpoint.com>, Greg Kroah-Hartman <gregkh@suse.de>, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org +Message-ID: <Pine.LNX.4.64.1005271431530.5422@ask.diku.dk> + + +From: Julia Lawall <julia@diku.dk> + +If port is NULL, then the call to dev_err will dereference a value that is +a small offset from NULL. + +A simplified version of the semantic match that finds this problem is as +follows: (http://coccinelle.lip6.fr/) + +// <smpl> +@r exists@ +expression E,E1; +identifier f; +statement S1,S2,S3; +@@ + +if ((E == NULL && ...) || ...) +{ + ... when != if (...) S1 else S2 + when != E = E1 +* E->f + ... when any + return ...; +} +else S3 +// </smpl> + +Signed-off-by: Julia Lawall <julia@diku.dk> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/serial/digi_acceleport.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/drivers/usb/serial/digi_acceleport.c ++++ b/drivers/usb/serial/digi_acceleport.c +@@ -1239,8 +1239,7 @@ static void digi_write_bulk_callback(str + + /* port and serial sanity check */ + if (port == NULL || (priv = usb_get_serial_port_data(port)) == NULL) { +- dev_err(&port->dev, +- "%s: port or port->private is NULL, status=%d\n", ++ pr_err("%s: port or port->private is NULL, status=%d\n", + __func__, status); + return; + } |
