- stable review
Subsystems (23)
cover - stable review
This is the start of the stable review cycle for the 2.6.14.4 release. There are 26 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let us know. If anyone is a maintainer of the proper subsystem, and wants to add a signed-off-by: line to the patch, please respond with it.
These patches are sent out with a number of different people on the Cc:
line. If you wish to be a reviewer, please email [email protected] to add your name to the list. If you want to be off the reviewer list, also email us.
Responses should be made by December 15, 06:00:00 UTC UTC. Anything received after that time, might be too late.
thanks,
the -stable release team
PATCH 1/26 drivers/scsi/dpt_i2o.c: fix a user-after-free
-stable review patch. If anyone has any objections, please let us know.
------------------
From: Adrian Bunk <[email protected]>
The Coverity checker spotted this obvious use-after-free
--- drivers/scsi/dpt_i2o.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)
drivers/scsi/dpt_i2o.c +5 -4
@@ -816,7 +816,7 @@ static int adpt_hba_reset(adpt_hba* pHbastatic void adpt_i2o_sys_shutdown (void ) {adpt_hba *pHba, *pNext; -struct adpt_i2o_post_wait_data *p1, *p2; +struct adpt_i2o_post_wait_data *p1, *old;printk (KERN_INFO "Shutting down Adaptec I2O controllers.\n" );printk (KERN_INFO " This could take a few minutes if there are many devices attached\n" );
@@ -830,13 +830,14 @@ static void adpt_i2o_sys_shutdown(void) }/* Remove any timedout entries from the wait queue. */ - p2 =NULL ;// spin_lock_irqsave(&adpt_post_wait_lock, flags); /* Nothing should be outstanding at this point so just * free them */ -for (p1 = adpt_post_wait_queue; p1; p2 = p1, p1 = p2->next) { -kfree (p1); +for (p1 = adpt_post_wait_queue; p1;) { + old = p1; + p1 = p1->next; +kfree (old); }// spin_unlock_irqrestore(&adpt_post_wait_lock, flags); adpt_post_wait_queue =NULL ;
--
PATCH 2/26 drivers/message/i2o/pci.c: fix a use-after-free
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: Adrian Bunk <[email protected]>
The Coverity checker spotted this obvious use-after-free
--- drivers/message/i2o/pci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/message/i2o/pci.c +1 -1
@@ -421,8 +421,8 @@ static int __devinit i2o_pci_probe(struci2o_pci_free (c); free_controller: -i2o_iop_free (c);put_device (c->device.parent); +i2o_iop_free (c); disable:pci_disable_device (pdev);
--
PATCH 3/26 drivers/infiniband/core/mad.c: fix a use-after-free
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: Adrian Bunk <[email protected]>
The Coverity checker spotted this obvious use-after-free caused by a wrong order of the cleanups.
--- drivers/infiniband/core/mad.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/infiniband/core/mad.c +2 -2
@@ -356,9 +356,9 @@ error4:spin_unlock_irqrestore (&port_priv->reg_lock, flags);kfree (reg_req); error3: -kfree (mad_agent_priv); -error2:ib_dereg_mr (mad_agent_priv->agent.mr); +error2: +kfree (mad_agent_priv); error1:return ret; }
--
PATCH 4/26 Fix crash when ptrace poking hugepage areas
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: David Gibson <[email protected]>
set_page_dirty() will not cope with being handed a page * which is part of a compound page, but not the master page in that compound page. This case can occur via access_process_vm() if you attemp to write to another process's hugepage memory area using ptrace() (causing an oops or hang).
This patch fixes the bug by only calling set_page_dirty() from access_process_vm() if the page is not a compound page. We already use a similar fix in bio_set_pages_dirty() for the case of direct io to hugepages.
--- kernel/ptrace.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
kernel/ptrace.c +2 -1
@@ -238,7 +238,8 @@ int access_process_vm(struct task_structif (write) {copy_to_user_page (vma, page, addr, maddr + offset, buf, bytes); -set_page_dirty_lock (page); +if (!PageCompound (page)) +set_page_dirty_lock (page); }else {copy_from_user_page (vma, page, addr, buf, maddr + offset, bytes);
--
PATCH 5/26 USB: Adapt microtek driver to new scsi features
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: Oliver Neukum <[email protected]>
[PATCH] USB: Adapt microtek driver to new scsi features
the scsi layer now uses very short sg lists. This breaks the microtek driver. Here is a patch fixes this and some other issues.
--- drivers/usb/image/microtek.c | 31 +++++++++++++++++++++++++------ drivers/usb/image/microtek.h | 2 +- 2 files changed, 26 insertions(+), 7 deletions(-)
drivers/usb/image/microtek.c +25 -6
@@ -327,6 +327,18 @@ static inline void mts_urb_abort(structusb_kill_urb ( desc->urb ); } +static int mts_slave_alloc (struct scsi_device *s) +{ + s->inquiry_len =0x24 ; +return 0 ; +} + +static int mts_slave_configure (struct scsi_device *s) +{ +blk_queue_dma_alignment (s->request_queue, (512 -1 )); +return 0 ; +} +static int mts_scsi_abort (Scsi_Cmnd *srb) {struct mts_desc * desc = (struct mts_desc *)(srb->device->host->hostdata[0 ]);
@@ -411,7 +423,7 @@ static void mts_transfer_done( struct urMTS_INT_INIT (); context->srb->result &=MTS_SCSI_ERR_MASK ; - context->srb->result |= (unsigned )context->status<<1 ; + context->srb->result |= (unsigned )(*context->scsi_status)<<1 ;mts_transfer_cleanup (transfer);
@@ -427,7 +439,7 @@ static void mts_get_status( struct urb *mts_int_submit_urb (transfer,usb_rcvbulkpipe (context->instance->usb_dev, context->instance->ep_response), - &context->status, + context->scsi_status,1 , mts_transfer_done ); }
@@ -481,7 +493,7 @@ static void mts_command_done( struct urb context->data_pipe, context->data, context->data_length, - context->srb->use_sg ? mts_do_sg : mts_data_done); + context->srb->use_sg > 1 ? mts_do_sg : mts_data_done); }else {mts_get_status (transfer); }
@@ -627,7 +639,6 @@ int mts_scsi_queuecommand( Scsi_Cmnd *srcallback (srb); } - out:return err; }
@@ -645,6 +656,9 @@ static Scsi_Host_Template mts_scsi_host_ .cmd_per_lun = 1, .use_clustering = 1, .emulated = 1, + .slave_alloc = mts_slave_alloc, + .slave_configure = mts_slave_configure, + .max_sectors= 256, /* 128 K */ };struct vendor_product
@@ -782,6 +796,10 @@ static int mts_usb_probe(struct usb_inteif (!new_desc->urb) goto out_kfree; + new_desc->context.scsi_status =kmalloc (1 ,GFP_KERNEL ); +if (!new_desc->context.scsi_status) + goto out_kfree2; + new_desc->usb_dev = dev; new_desc->usb_intf = intf;init_MUTEX (&new_desc->lock);
@@ -818,6 +836,8 @@ static int mts_usb_probe(struct usb_inteusb_set_intfdata (intf, new_desc);return 0 ; + out_kfree2: +kfree (new_desc->context.scsi_status); out_free_urb:usb_free_urb (new_desc->urb); out_kfree:
@@ -837,6 +857,7 @@ static void mts_usb_disconnect (struct uscsi_host_put (desc->host);usb_free_urb (desc->urb); +kfree (desc->context.scsi_status);kfree (desc); }
@@ -857,5 +878,3 @@ module_exit(microtek_drv_exit);MODULE_AUTHOR (DRIVER_AUTHOR );MODULE_DESCRIPTION (DRIVER_DESC );MODULE_LICENSE ("GPL" ); - -
drivers/usb/image/microtek.h +1 -1
@@ -22,7 +22,7 @@ struct mts_transfer_contextint data_pipe;int fragment; -u8 status;/* status returned from ep_response after command completion */ +u8 *scsi_status;/* status returned from ep_response after command completion */ };
--
PATCH 6/26 setkeys needs root
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: Daniel Drake <[email protected]>
This patch combines commit 0b360adbdb54d5b98b78d57ba0916bc4b8871968 (make setkeys root-only) and commit e3f17f0f6e98f58edb13cb38810d93e6d4808e68 (only disallow setting by users)
Because people can play games reprogramming keys and leaving traps for the next user of the console.
--- drivers/char/vt_ioctl.c | 6 ++++++ 1 file changed, 6 insertions(+)
drivers/char/vt_ioctl.c +6 -0
@@ -80,6 +80,9 @@ do_kdsk_ioctl(int cmd, struct kbentry __if (copy_from_user (&tmp, user_kbe,sizeof (struct kbentry )))return -EFAULT ; +if (!capable (CAP_SYS_TTY_CONFIG )) + perm =0 ; +switch (cmd) {case KDGKBENT : key_map = key_maps[s];
@@ -192,6 +195,9 @@ do_kdgkb_ioctl(int cmd, struct kbsentryint i, j, k;int ret; +if (!capable (CAP_SYS_TTY_CONFIG )) + perm =0 ; + kbs =kmalloc (sizeof (*kbs),GFP_KERNEL );if (!kbs) { ret = -ENOMEM ;
--
PATCH 7/26 : Fix processing of fib_lookup netlink messages
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: Thomas Graf <[email protected]>
The receive path for fib_lookup netlink messages is lacking sanity checks for header and payload and is thus vulnerable to malformed netlink messages causing illegal memory references.
--- net/ipv4/fib_frontend.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
net/ipv4/fib_frontend.c +6 -2
@@ -545,12 +545,16 @@ static void nl_fib_input(struct sock *skstruct sk_buff *skb =NULL ;struct nlmsghdr *nlh =NULL ;struct fib_result_nl *frn; -int err;u32 pid;struct fib_table *tb; - skb =skb_recv_datagram (sk,0 ,0 , &err); + skb =skb_dequeue (&sk->sk_receive_queue); nlh = (struct nlmsghdr *)skb->data; +if (skb->len <NLMSG_SPACE (0 ) || skb->len < nlh->nlmsg_len || + nlh->nlmsg_len <NLMSG_LENGTH (sizeof (*frn))) { +kfree_skb (skb); +return ; + } frn = (struct fib_result_nl *)NLMSG_DATA (nlh); tb =fib_get_table (frn->tb_id_in);
--
PATCH 8/26 Fix listxattr() for generic security attributes
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: Daniel Drake <[email protected]>
Commit f549d6c18c0e8e6cf1bf0e7a47acc1daf7e2cec1 introduced a generic fallback for security xattrs, but appears to include a subtle bug.
Gentoo users with kernels with selinux compiled in, and coreutils compiled with acl support, noticed that they could not copy files on tmpfs using 'cp'.
cp (compiled with acl support) copies the file, lists the extended attributes on the old file, copies them all to the new file, and then exits. However the listxattr() calls were failing with this odd behaviour:
llistxattr("a.out", (nil), 0) = 17llistxattr("a.out", 0x7fffff8c6cb0, 17) = -1 ERANGE (Numerical result out of range)
I believe this is a simple problem in the logic used to check the buffer sizes; if the user sends a buffer the exact size of the data, then its ok :)
This change solves the problem.
More info can be found at http://bugs.gentoo.org/113138
--- fs/xattr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
fs/xattr.c +1 -1
@@ -243,7 +243,7 @@ listxattr(struct dentry *d, char __user error = d->d_inode->i_op->listxattr (d, klist, size); }else { error =security_inode_listsecurity (d->d_inode, klist, size); -if (size && error >= size) +if (size && error > size) error = -ERANGE ; }if (error >0 ) {
--
PATCH 9/26 DVB: BUDGET CI card depends on STV0297 demodulator
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: Daniel Drake <[email protected]>
This patch solves a DVB driver compile error introduced in 2.6.14
--- drivers/media/dvb/ttpci/Kconfig | 1 + 1 file changed, 1 insertion(+)
drivers/media/dvb/ttpci/Kconfig +1 -0
@@ -81,6 +81,7 @@ config DVB_BUDGET_CI tristate "Budget cards with onboard CI connector" depends on DVB_CORE && PCI select VIDEO_SAA7146 + select DVB_STV0297 select DVB_STV0299 select DVB_TDA1004X help
--
Re: [patch 09/26] DVB: BUDGET CI card depends on STV0297 demodulator
Quoted 8 lines · Greg KH
-stable review patch. If anyone has any objections, please let us know.
------------------
From: Daniel Drake <[email protected]>This patch solves a DVB driver compile error introduced in 2.6.14
Signed-off-by Greg Kroah-Hartman <[email protected]>
Sorry, I accidently dropped the headers when submitting this. The correct headers are as below:
From: Carlos Silva <[email protected]>
[PATCH] DVB: BUDGET CI card depends on STV0297 demodulator.
BUDGET_CI card depends on STV0297 demodulator.
Re: [stable] Re: [patch 09/26] DVB: BUDGET CI card depends on STV0297 demodulator
Quoted 6 lines · Daniel Drake
Quoted 5 lines · Greg KH
-stable review patch. If anyone has any objections, please let us know.
------------------
From: Daniel Drake <[email protected]>
Quoted 6 lines
Quoted 3 lines
This patch solves a DVB driver compile error introduced in 2.6.14
Signed-off-by Greg Kroah-Hartman <[email protected]>Sorry, I accidently dropped the headers when submitting this. The correct headers are as below:
I've updated the headers, thanks for letting us know.
greg k-h
PATCH 10/26 ACPI: Prefer _CST over FADT for C-state capabilities
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: Venkatesh Pallipadi <[email protected]>
Note: This ACPI standard compliance may cause regression on some system, if they have _CST present, but _CST value is bogus. "nocst" module parameter should workaround that regression.
http://bugzilla.kernel.org/show_bug.cgi?id=5165
(cherry picked from 883baf7f7e81cca26f4683ae0d25ba48f094cc08 commit)
--- drivers/acpi/processor_idle.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
drivers/acpi/processor_idle.c +5 -5
@@ -687,7 +687,7 @@ static int acpi_processor_get_power_info/* Validate number of power states discovered */ if (pr->power.count <2 ) - status = -ENODEV ; + status = -EFAULT ; end:acpi_os_free (buffer.pointer);
@@ -838,11 +838,11 @@ static int acpi_processor_get_power_info* this function */ result =acpi_processor_get_power_info_cst (pr); -if ((result) || (acpi_processor_power_verify (pr) <2 )) { +if (result == -ENODEV ) result =acpi_processor_get_power_info_fadt (pr); -if ((result) || (acpi_processor_power_verify (pr) <2 )) - result =acpi_processor_get_power_info_default_c1 (pr); - } + +if ((result) || (acpi_processor_power_verify (pr) <2 )) + result =acpi_processor_get_power_info_default_c1 (pr);/* * Set Default Policy
--
Re: [patch 10/26] ACPI: Prefer _CST over FADT for C-state capabilities
Quoted 12 lines · Greg KH
-stable review patch. If anyone has any objections, please let us know.
------------------
From: Venkatesh Pallipadi <[email protected]>Note: This ACPI standard compliance may cause regression on some system, if they have
_CSTpresent, but_CSTvalue is bogus. "nocst" module parameter should workaround that regression.
Quoted 8 lines
(cherry picked from
883baf7f7e81cca26f4683ae0d25ba48f094cc08commit)Signed-off-by Venkatesh Pallipadi<[email protected]>Signed-off-by Len Brown <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>--- drivers/acpi/processor_idle.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
Venkatesh followed up in a private email that a 3rd patch is needed to solve the hyperthreading slowdown issue. This patch is not yet in Linus' tree (it is in acpi-test).
Maybe we should drop these patches (10 and 12) until the 3rd patch has been merged. I haven't been shipping the 3rd patch in Gentoo (yet) so I'm not able to gauge its effect...
Attaching the 3rd patch anyway.
Daniel
From: Len Brown <[email protected]>
Bug fix for bugzilla #5165 http://bugzilla.kernel.org/show_bug.cgi?id=5165
Incremental changes to earlier patch.
* Changing the polarity of plvl2_up
* Skip promotion/demotion code when not needed.
drivers/acpi/processor_idle.c +15 -5
@@ -278,8 +278,6 @@ static void acpi_processor_idle(void) } } - cx->usage++; -#ifdef CONFIG_HOTPLUG_CPU /* * Check for P_LVL2_UP flag before entering C2 and above on
@@ -287,9 +285,12 @@ static void acpi_processor_idle(void)* detection phase, to work cleanly with logical CPU hotplug. */ if ((cx->type !=ACPI_STATE_C1 ) && (num_online_cpus () >1 ) && - !pr->flags.has_cst && acpi_fadt.plvl2_up) - cx->type =ACPI_STATE_C1 ; + !pr->flags.has_cst && !acpi_fadt.plvl2_up) + cx = &pr->power.states[ACPI_STATE_C1 ];#endif + + cx->usage++; +/* * Sleep: * ------
@@ -378,6 +379,15 @@ static void acpi_processor_idle(void) next_state = pr->power.state; +#ifdef CONFIG_HOTPLUG_CPU +/* Don't do promotion/demotion */ +if ((cx->type ==ACPI_STATE_C1 ) && (num_online_cpus () >1 ) && + !pr->flags.has_cst && !acpi_fadt.plvl2_up) { + next_state = cx; + goto end; + } +#endif +/* * Promotion? * ----------
@@ -549,7 +559,7 @@ static int acpi_processor_get_power_info* Check for P_LVL2_UP flag before entering C2 and above on * an SMP system. */ -if ((num_online_cpus () >1 ) && acpi_fadt.plvl2_up) +if ((num_online_cpus () >1 ) && !acpi_fadt.plvl2_up)return_VALUE (-ENODEV );#endif
Re: [stable] Re: [patch 10/26] ACPI: Prefer _CST over FADT for C-state capabilities
Quoted 22 lines · Daniel Drake
Quoted 12 lines · Greg KH
-stable review patch. If anyone has any objections, please let us know.
------------------
From: Venkatesh Pallipadi <[email protected]>Note: This ACPI standard compliance may cause regression on some system, if they have
_CSTpresent, but_CSTvalue is bogus. "nocst" module parameter should workaround that regression.Quoted 8 lines
(cherry picked from
883baf7f7e81cca26f4683ae0d25ba48f094cc08commit)Signed-off-by Venkatesh Pallipadi<[email protected]>Signed-off-by Len Brown <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>---
drivers/acpi/processor_idle.c| 10 +++++-----1 file changed, 5 insertions(+), 5 deletions(-)
Quoted 7 lines
Venkatesh followed up in a private email that a 3rd patch is needed to solve the hyperthreading slowdown issue. This patch is not yet in Linus' tree (it is in acpi-test).
Maybe we should drop these patches (10 and 12) until the 3rd patch has been merged. I haven't been shipping the 3rd patch in Gentoo (yet) so I'm not able to gauge its effect...
Ok, as these two patches don't solve anything, I'll just drop them from the series. If the third one makes it into mainline, let us know and we can add all 3 to the -stable tree.
thanks,
greg k-h
PATCH 11/26 ACPI: fix HP nx8220 boot hang regression
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: Thomas Renninger <[email protected]>
[ACPI] fix HP nx8220 boot hang regression
This patch reverts the acpi_bus_find_driver() return value check that came in via the PCI tree via 3fb02738b0fd36f47710a2bf207129efd2f5daa2
[PATCH] acpi bridge hotadd: Allow ACPI .add and .start operations to be done independently
This particular change broke booting of some HP/Compaq laptops unless acpi=noirq is used.
http://bugzilla.kernel.org/show_bug.cgi?id=5221
https://bugzilla.novell.com/show_bug.cgi?id=116763
--- drivers/acpi/scan.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/acpi/scan.c +1 -1
@@ -1111,7 +1111,7 @@ acpi_add_single_object(struct acpi_devic* * TBD: Assumes LDM provides driver hot-plug capability. */ - result =acpi_bus_find_driver (device); +acpi_bus_find_driver (device); end:if (!result)
--
PATCH 12/26 ACPI: Add support for FADT P_LVL2_UP flag
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: Venkatesh Pallipadi <[email protected]>
[ACPI] Add support for FADT P_LVL2_UP flag which tells us if C2 is valid for UP-only, or SMP.
As there is no separate bit for C3, use P_LVL2_UP bit to cover both C2 and C3.
http://bugzilla.kernel.org/show_bug.cgi?id=5165
(cherry picked from 28b86b368af3944eb383078fc5797caf2dc8ce44 commit)
--- drivers/acpi/processor_idle.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
drivers/acpi/processor_idle.c +19 -0
@@ -261,6 +261,16 @@ static void acpi_processor_idle(void) cx->usage++; +#ifdef CONFIG_HOTPLUG_CPU +/* +* Check for P_LVL2_UP flag before entering C2 and above on +* an SMP system. We do it here instead of doing it at _CST/P_LVL +* detection phase, to work cleanly with logical CPU hotplug. +*/ +if ((cx->type !=ACPI_STATE_C1 ) && (num_online_cpus () >1 ) && + !pr->flags.has_cst && acpi_fadt.plvl2_up) + cx->type =ACPI_STATE_C1 ; +#endif /* * Sleep: * ------
@@ -527,6 +537,15 @@ static int acpi_processor_get_power_info pr->power.states[ACPI_STATE_C0 ].valid =1 ; pr->power.states[ACPI_STATE_C1 ].valid =1 ; +#ifndef CONFIG_HOTPLUG_CPU +/* +* Check for P_LVL2_UP flag before entering C2 and above on +* an SMP system. +*/ +if ((num_online_cpus () >1 ) && acpi_fadt.plvl2_up) +return_VALUE (-ENODEV ); +#endif +/* determine C2 and C3 address from pblk */ pr->power.states[ACPI_STATE_C2 ].address = pr->pblk +4 ; pr->power.states[ACPI_STATE_C3 ].address = pr->pblk +5 ;
--
PATCH 13/26 32bit integer overflow in invalidate_inode_pages2()
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: Oleg Drokin <[email protected]>
[PATCH] 32bit integer overflow in invalidate_inode_pages2()
Fix a 32 bit integer overflow in invalidate_inode_pages2_range.
--- mm/truncate.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
mm/truncate.c +3 -3
@@ -291,8 +291,8 @@ int invalidate_inode_pages2_range(struct* Zap the rest of the file in one hit. */ unmap_mapping_range (mapping, - page_index <<PAGE_CACHE_SHIFT , - (end - page_index +1 ) + (loff_t )page_index<<PAGE_CACHE_SHIFT , + (loff_t)(end - page_index +1 ) <<PAGE_CACHE_SHIFT ,0 ); did_range_unmap =1 ;
@@ -301,7 +301,7 @@ int invalidate_inode_pages2_range(struct* Just zap this page */ unmap_mapping_range (mapping, - page_index <<PAGE_CACHE_SHIFT , + (loff_t )page_index<<PAGE_CACHE_SHIFT ,PAGE_CACHE_SIZE ,0 ); } }
--
PATCH 14/26 V4L/DVB (3135) Fix tuner init for Pinnacle PCTV Stereo
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: Ricardo Cerqueira <[email protected]>
- The Pinnacle PCTV Stereo needs tda9887 port2 set to 1
- Without this patch, mt20xx tuner is not detected and the board doesn't tune.
--- drivers/media/video/saa7134/saa7134-cards.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/media/video/saa7134/saa7134-cards.c +1 -1
@@ -972,7 +972,7 @@ struct saa7134_board saa7134_boards[] = .radio_type = UNSET, .tuner_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET, - .tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER, + .tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER | TDA9887_PORT2_ACTIVE, .inputs = {{ .name = name_tv, .vmux = 3,
--
PATCH 15/26 V4L/DVB: Fix analog NTSC for Thomson DTT 761X hybrid tuner
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: Michael Krufky <[email protected]>
[PATCH] V4L/DVB: Fix analog NTSC for Thomson DTT 761X hybrid tuner
- Enable tda9887 on the following cx88 boards:
pcHDTV 3000
FusionHDTV3 Gold-T
- This ensures that analog NTSC video will function properly, without this patch, the tuner may appear to be broken.
--- drivers/media/video/cx88/cx88-cards.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/media/video/cx88/cx88-cards.c +2 -0
@@ -567,6 +567,7 @@ struct cx88_board cx88_boards[] = { .radio_type = UNSET, .tuner_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET, + .tda9887_conf = TDA9887_PRESENT, .input = {{ .type = CX88_VMUX_TELEVISION, .vmux = 0,
@@ -711,6 +712,7 @@ struct cx88_board cx88_boards[] = { .radio_type = UNSET, .tuner_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET, + .tda9887_conf = TDA9887_PRESENT, .input = {{ .type = CX88_VMUX_TELEVISION, .vmux = 0,
--
PATCH 16/26 nm256: reset workaround for Latitude CSx
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: John W. Linville <[email protected]>
Modules: NM256 driver
The current snd-nm256 driver can cause Dell Latitude CSx laptops to lock-up during module (un)load. I have isolated this to the writes to the control port register at offset 0x6cc which were not already protected by the existing reset_workaround.
I tried grouping these writes with the existing reset_workaround clause, but that caused the driver to have (un)load problems on the Dell Latitude LS laptops. So, I have implemented a reset_workaround_2 clause (please feel free to suggest a better name!) to cover this situation and added a quirk entry for the CSx laptops.
sound/pci/nm256/nm256.c +0 -0
--- sound/pci/nm256/nm256.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-)
sound/pci/nm256/nm256.c +20 -3
@@ -62,6 +62,7 @@ static int buffer_top[SNDRV_CARDS] = {[0static int use_cache[SNDRV_CARDS ] = {[0 ... (SNDRV_CARDS -1 )] =0 };/* disabled */ static int vaio_hack[SNDRV_CARDS ] = {[0 ... (SNDRV_CARDS -1 )] =0 };/* disabled */ static int reset_workaround[SNDRV_CARDS ]; +static int reset_workaround_2[SNDRV_CARDS ];module_param_array (index, int,NULL ,0444 );MODULE_PARM_DESC (index,"Index value for " CARD_NAME " soundcard." );
@@ -83,6 +84,8 @@ module_param_array(vaio_hack, bool, NULLMODULE_PARM_DESC (vaio_hack,"Enable workaround for Sony VAIO notebooks." );module_param_array (reset_workaround, bool,NULL ,0444 );MODULE_PARM_DESC (reset_workaround,"Enable AC97 RESET workaround for some laptops." ); +module_param_array (reset_workaround_2, bool,NULL ,0444 ); +MODULE_PARM_DESC (reset_workaround_2,"Enable extended AC97 RESET workaround for some other laptops." );/* * hw definitions
@@ -226,6 +229,7 @@ struct snd_nm256 { unsigned int coeffs_current: 1; /* coeff. table is loaded? */ unsigned int use_cache: 1; /* use one big coef. table */ unsigned int reset_workaround: 1; /* Workaround for some laptops to avoid freeze */ + unsigned int reset_workaround_2: 1; /* Extended workaround for some other laptops to avoid freeze */int mixer_base;/* register offset of ac97 mixer */ int mixer_status_offset;/* offset of mixer status reg. */
@@ -1199,8 +1203,11 @@ snd_nm256_ac97_reset(ac97_t *ac97)/* Dell latitude LS will lock up by this */ snd_nm256_writeb (chip,0x6cc ,0x87 ); } -snd_nm256_writeb (chip,0x6cc ,0x80 ); -snd_nm256_writeb (chip,0x6cc ,0x0 ); +if (! chip->reset_workaround_2) { +/* Dell latitude CSx will lock up by this */ +snd_nm256_writeb (chip,0x6cc ,0x80 ); +snd_nm256_writeb (chip,0x6cc ,0x0 ); + } }/* create an ac97 mixer interface */
@@ -1542,7 +1549,7 @@ struct nm256_quirk {int type; }; -enum {NM_BLACKLISTED ,NM_RESET_WORKAROUND }; +enum {NM_BLACKLISTED ,NM_RESET_WORKAROUND ,NM_RESET_WORKAROUND_2 };static struct nm256_quirk nm256_quirks[]__devinitdata = {/* HP omnibook 4150 has cs4232 codec internally */
@@ -1551,6 +1558,8 @@ static struct nm256_quirk nm256_quirks[] { .vendor = 0x104d, .device = 0x8041, .type = NM_RESET_WORKAROUND }, /* Dell Latitude LS */ { .vendor = 0x1028, .device = 0x0080, .type = NM_RESET_WORKAROUND }, + /* Dell Latitude CSx */ + { .vendor = 0x1028, .device = 0x0091, .type = NM_RESET_WORKAROUND_2 }, { }/* terminator */ };
@@ -1582,6 +1591,9 @@ static int __devinit snd_nm256_probe(strcase NM_BLACKLISTED :printk (KERN_INFO "nm256: The device is blacklisted. Loading stopped\n" );return -ENODEV ; +case NM_RESET_WORKAROUND_2 : + reset_workaround_2[dev] =1 ; +/* Fall-through */ case NM_RESET_WORKAROUND : reset_workaround[dev] =1 ;break ;
@@ -1638,6 +1650,11 @@ static int __devinit snd_nm256_probe(str chip->reset_workaround =1 ; } +if (reset_workaround_2[dev]) { +snd_printdd (KERN_INFO "nm256: reset_workaround_2 activated\n" ); + chip->reset_workaround_2 =1 ; + } +if ((err =snd_nm256_pcm (chip,0 )) <0 || (err =snd_nm256_mixer (chip)) <0 ) {snd_card_free (card);
--
PATCH 17/26 i82365: release all resources if no devices are found
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: Igor Popik <[email protected]>
The i82365 driver does not release all the resources when the device is not found. This can cause an oops when reading /proc/ioports after module unload (e.g. bug #5657).
--- drivers/pcmcia/i82365.c | 1 + 1 file changed, 1 insertion(+)
drivers/pcmcia/i82365.c +1 -0
@@ -1382,6 +1382,7 @@ static int __init init_i82365(void)if (sockets ==0 ) {printk ("not found.\n" );platform_device_unregister (&i82365_device); +release_region (i365_base,2 );driver_unregister (&i82365_driver);return -ENODEV ; }
--
PATCH 18/26 Fix serverworks TLB flush.
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: Dave Jones <[email protected]>
[AGPGART] Fix serverworks TLB flush.
Go back to what 2.4 kernels used to do here, as if this hits, the kernel just hangs indefinitly.
Actually an improvement over 2.4 - we now break; out of the loop instead of just printing messages on timeouts.
--- drivers/char/agp/sworks-agp.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-)
drivers/char/agp/sworks-agp.c +16 -2
@@ -242,13 +242,27 @@ static int serverworks_fetch_size(void)*/ static void serverworks_tlbflush (struct agp_memory *temp) { +unsigned long timeout; +writeb (1 , serverworks_private.registers+SVWRKS_POSTFLUSH ); -while (readb (serverworks_private.registers+SVWRKS_POSTFLUSH ) ==1 ) + timeout = jiffies +3 *HZ ; +while (readb (serverworks_private.registers+SVWRKS_POSTFLUSH ) ==1 ) {cpu_relax (); +if (time_after (jiffies, timeout)) { + printk(KERN_ERR PFX "TLB post flush took more than 3 seconds\n"); +break ; + } + }writel (1 , serverworks_private.registers+SVWRKS_DIRFLUSH ); -while (readl (serverworks_private.registers+SVWRKS_DIRFLUSH ) ==1 ) + timeout = jiffies +3 *HZ ; +while (readl (serverworks_private.registers+SVWRKS_DIRFLUSH ) ==1 ) {cpu_relax (); +if (time_after (jiffies, timeout)) { + printk(KERN_ERR PFX "TLB Dir flush took more than 3 seconds\n"); +break ; + } + } }static int serverworks_configure (void )
--
PATCH 19/26 bonding: fix feature consolidation
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: Jay Vosburgh <[email protected]>
[PATCH] bonding: fix feature consolidation
This should resolve http://bugzilla.kernel.org/show_bug.cgi?id=5519
The current feature computation loses bits that it doesn't know about, resulting in an inability to add VLANs and possibly other havoc. Rewrote function to preserve bits it doesn't know about, remove an unneeded state variable, and simplify the code.
--- drivers/net/bonding/bond_main.c | 32 +++++++++++--------------------- drivers/net/bonding/bonding.h | 7 ++----- 2 files changed, 13 insertions(+), 26 deletions(-)
drivers/net/bonding/bond_main.c +11 -21
@@ -1604,35 +1604,27 @@ static int bond_sethwaddr(struct net_dev (NETIF_F_SG |NETIF_F_IP_CSUM |NETIF_F_NO_CSUM |NETIF_F_HW_CSUM )/* -* Compute the features available to the bonding device by -* intersection of all of the slave devices' BOND_INTERSECT_FEATURES. -* Call this after attaching or detaching a slave to update the -* bond's features. +* Compute the common dev->feature set available to all slaves. Some +* feature bits are managed elsewhere, so preserve feature bits set on +* master device that are not part of the examined set. */static int bond_compute_features (struct bonding *bond) { -int i; +unsigned long features =BOND_INTERSECT_FEATURES ;struct slave *slave;struct net_device *bond_dev = bond->dev; -int features = bond->bond_features; +int i; -bond_for_each_slave (bond, slave, i) { -struct net_device * slave_dev = slave->dev; -if (i ==0 ) { - features |=BOND_INTERSECT_FEATURES ; - } - features &= - ~(~slave_dev->features &BOND_INTERSECT_FEATURES ); - } +bond_for_each_slave (bond, slave, i) + features &= (slave->dev->features &BOND_INTERSECT_FEATURES ); -/* turn off NETIF_F_SG if we need a csum and h/w can't do it */ if ((features &NETIF_F_SG ) && - !(features & (NETIF_F_IP_CSUM | -NETIF_F_NO_CSUM | -NETIF_F_HW_CSUM ))) { + !(features & (NETIF_F_IP_CSUM | +NETIF_F_NO_CSUM | +NETIF_F_HW_CSUM ))) features &= ~NETIF_F_SG ; - } + features |= (bond_dev->features & ~BOND_INTERSECT_FEATURES ); bond_dev->features = features;return 0 ;
@@ -4508,8 +4500,6 @@ static int __init bond_init(struct net_dNETIF_F_HW_VLAN_RX | NETIF_F_HW_VLAN_FILTER); - bond->bond_features = bond_dev->features; -#ifdef CONFIG_PROC_FS bond_create_proc_entry (bond);#endif
drivers/net/bonding/bonding.h +2 -5
@@ -40,8 +40,8 @@#include "bond_3ad.h" #include "bond_alb.h" -#define DRV_VERSION "2.6.4" -#define DRV_RELDATE "September 26, 2005" +#define DRV_VERSION "2.6.5" +#define DRV_RELDATE "November 4, 2005"#define DRV_NAME "bonding"#define DRV_DESCRIPTION "Ethernet Channel Bonding Driver"
@@ -211,9 +211,6 @@ struct bonding {struct bond_params params;struct list_head vlan_list;struct vlan_group *vlgrp; -/* the features the bonding device supports, independently -* of any slaves */ -int bond_features; };/**
--
PATCH 20/26 : recompute features when adding a new device
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: Olaf Rempel <[email protected]>
We must recompute bridge features everytime the list of underlying devices changes, or we might end up with features that are not supported by all devices (eg. NETIF_F_TSO)
This patch adds the missing recompute when adding a device to the bridge.
--- net/bridge/br_if.c | 1 + 1 file changed, 1 insertion(+)
net/bridge/br_if.c +1 -0
@@ -366,6 +366,7 @@ int br_add_if(struct net_bridge *br, strspin_lock_bh (&br->lock);br_stp_recalculate_bridge_id (br); +br_features_recompute (br);if ((br->dev->flags &IFF_UP ) && (dev->flags &IFF_UP ) &&netif_carrier_ok (dev))br_stp_enable_port (p);
--
PATCH 21/26 locking rewrite (== fix)
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: Jeff Garzik <[email protected]>
[libata] locking rewrite (== fix)
A lot of power packed into a little patch.
This change eliminates the sharing between our controller-wide spinlock and the SCSI core's Scsi_Host lock. As the locking in libata was already highly compartmentalized, always referencing our own lock, and never scsi_host::host_lock.
As a side effect, this change eliminates a deadlock from calling scsi_finish_command() while inside our spinlock.
--- drivers/scsi/libata-core.c | 2 -- drivers/scsi/libata-scsi.c | 9 ++++++++- 2 files changed, 8 insertions(+), 3 deletions(-)
drivers/scsi/libata-core.c +0 -2
@@ -3916,8 +3916,6 @@ static void ata_host_init(struct ata_por host->unique_id = ata_unique_id++; host->max_cmd_len =12 ; -scsi_assign_lock (host, &host_set->lock); - ap->flags =ATA_FLAG_PORT_DISABLED ; ap->id = host->unique_id; ap->host = host;
drivers/scsi/libata-scsi.c +8 -1
@@ -39,6 +39,7 @@#include <scsi/scsi.h> #include "scsi.h" #include <scsi/scsi_host.h> +#include <scsi/scsi_device.h> #include <linux/libata.h> #include <asm/uaccess.h>
@@ -1565,8 +1566,12 @@ int ata_scsi_queuecmd(struct scsi_cmnd *struct ata_port *ap;struct ata_device *dev;struct scsi_device *scsidev = cmd->device; +struct Scsi_Host *shost = scsidev->host; - ap = (struct ata_port *) &scsidev->host->hostdata[0 ]; + ap = (struct ata_port *) &shost->hostdata[0 ]; + +spin_unlock (shost->host_lock); +spin_lock (&ap->host_set->lock);ata_scsi_dump_cdb (ap, cmd);
@@ -1589,6 +1594,8 @@ int ata_scsi_queuecmd(struct scsi_cmnd *ata_scsi_translate (ap, dev, cmd, done, atapi_xlat); out_unlock: +spin_unlock (&ap->host_set->lock); +spin_lock (shost->host_lock);return 0 ; }
--
PATCH 22/26 I8K: fix /proc reporting of blank service tags
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: Dmitry Torokhov <[email protected]>
[PATCH] I8K: fix /proc reporting of blank service tags
Make /proc/i8k display '?' when service tag is blank in BIOS. This fixes segfault in i8k gkrellm plugin.
--- drivers/char/i8k.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
drivers/char/i8k.c +4 -2
@@ -99,7 +99,9 @@ struct smm_regs {static inline char *i8k_get_dmi_data (int field) { -return dmi_get_system_info (field) ? :"N/A" ; +char *dmi_data =dmi_get_system_info (field); + +return dmi_data && *dmi_data ? dmi_data :"?" ; }/*
@@ -396,7 +398,7 @@ static int i8k_proc_show(struct seq_filereturn seq_printf (seq,"%s %s %s %d %d %d %d %d %d %d\n" ,I8K_PROC_FMT , bios_version, -dmi_get_system_info (DMI_PRODUCT_SERIAL ) ? :"N/A" , +i8k_get_dmi_data (DMI_PRODUCT_SERIAL ), cpu_temp, left_fan, right_fan, left_speed, right_speed, ac_power, fn_key);
--
PATCH 23/26 ide-floppy: software eject not working with LS-120 drive
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: Ondrej Zary <[email protected]>
The problem (eject not working on ATAPI LS-120 drive) is caused by idefloppy_ioctl() function which *first* tries generic_ide_ioctl() and *only* if it fails with -EINVAL, proceeds with the specific ioctls. The generic eject command fails with something other than -EINVAL and the specific one is never executed.
This patch fixes it by first going through the internal ioctls and only trying generic_ide_ioctl() if none of them matches.
drivers/ide/ide-floppy.c +0 -0
--- drivers/ide/ide-floppy.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
drivers/ide/ide-floppy.c +2 -4
@@ -2038,11 +2038,9 @@ static int idefloppy_ioctl(struct inodestruct ide_floppy_obj *floppy =ide_floppy_g (bdev->bd_disk);ide_drive_t *drive = floppy->drive;void __user *argp = (void __user *)arg; -int err =generic_ide_ioctl (drive, file, bdev, cmd, arg); +int err;int prevent = (arg) ?1 :0 ;idefloppy_pc_t pc; -if (err != -EINVAL ) -return err;switch (cmd) {case CDROMEJECT :
@@ -2094,7 +2092,7 @@ static int idefloppy_ioctl(struct inodecase IDEFLOPPY_IOCTL_FORMAT_GET_PROGRESS :return idefloppy_get_format_progress (drive, argp); } -return -EINVAL ; +return generic_ide_ioctl (drive, file, bdev, cmd, arg); }static int idefloppy_media_changed (struct gendisk *disk)
--
PATCH 24/26 - stable review cciss: bug fix for hpacucli
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: Mike Miller <[email protected]>
This patch fixes a bug that breaks hpacucli, a command line interface for the HP Array Config Utility. Without this fix the utility will not detect any controllers in the system. I thought I had already fixed this, but I guess not.
Thanks to all who reported the issue. Please consider this this inclusion.
--- include/linux/cciss_ioctl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
include/linux/cciss_ioctl.h +1 -1
@@ -10,8 +10,8 @@typedef struct _cciss_pci_info_struct {unsigned char bus; -unsigned short domain;unsigned char dev_fn; +unsigned short domain;__u32 board_id; }cciss_pci_info_struct ;
--
PATCH 25/26 cciss: bug fix for BIG_PASS_THRU
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: Jens Axboe <[email protected]>
Applications using CCISS_BIG_PASSTHRU complained that the data written was zeros. The problem is that the buffer is being cleared after the user copy, unless the user copy has failed... Correct that logic.
drivers/block/cciss.c +0 -0
--- drivers/block/cciss.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
drivers/block/cciss.c +4 -3
@@ -1016,10 +1016,11 @@ static int cciss_ioctl(struct inode *ino status = -ENOMEM ; goto cleanup1; } -if (ioc->Request.Type.Direction ==XFER_WRITE && -copy_from_user (buff[sg_used], data_ptr, sz)) { +if (ioc->Request.Type.Direction ==XFER_WRITE ) { +if (copy_from_user (buff[sg_used], data_ptr, sz)) { status = -ENOMEM ; - goto cleanup1; + goto cleanup1; + } }else {memset (buff[sg_used],0 , sz); }
--
PATCH 26/26 Add try_to_freeze to kauditd
In reply to Greg KH-stable review patch. If anyone has any objections, please let us know.
------------------
From: Pierre Ossman <[email protected]>
kauditd was causing suspends to fail because it refused to freeze. Adding a try_to_freeze() to its sleep loop solves the issue.
kernel/audit.c +0 -0
--- kernel/audit.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
kernel/audit.c +3 -1
@@ -291,8 +291,10 @@ int kauditd_thread(void *dummy)set_current_state (TASK_INTERRUPTIBLE );add_wait_queue (&kauditd_wait, &wait); -if (!skb_queue_len (&audit_skb_queue)) +if (!skb_queue_len (&audit_skb_queue)) { +try_to_freeze ();schedule (); + }__set_current_state (TASK_RUNNING );remove_wait_queue (&kauditd_wait, &wait);
--