public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Linux 2.6.14.4
@ 2005-12-15  0:50 Greg KH
  2005-12-15  0:51 ` Greg KH
  2005-12-18 19:42 ` Linux 2.6.14.4 [intelfb problem] Sebastian Kaergel
  0 siblings, 2 replies; 9+ messages in thread
From: Greg KH @ 2005-12-15  0:50 UTC (permalink / raw)
  To: linux-kernel, stable; +Cc: torvalds

We (the -stable team) are announcing the release of the 2.6.14.3 kernel.

The diffstat and short summary of the fixes are below.

I'll also be replying to this message with a copy of the patch between
2.6.14.3 and 2.6.14.4, as it is small enough to do so.

The updated 2.6.14.y git tree can be found at:
 	rsync://rsync.kernel.org/pub/scm/linux/kernel/git/gregkh/linux-2.6.14.y.git
and can be browsed at the normal kernel.org git web browser:
	www.kernel.org/git/

thanks,

greg k-h

--------

 Makefile                                    |    2 -
 drivers/acpi/scan.c                         |    2 -
 drivers/block/cciss.c                       |    7 +++---
 drivers/char/agp/sworks-agp.c               |   18 ++++++++++++++-
 drivers/char/i8k.c                          |    6 +++--
 drivers/char/vt_ioctl.c                     |    6 +++++
 drivers/ide/ide-floppy.c                    |    6 +----
 drivers/infiniband/core/mad.c               |    4 +--
 drivers/media/dvb/ttpci/Kconfig             |    1 
 drivers/media/video/cx88/cx88-cards.c       |    2 +
 drivers/media/video/saa7134/saa7134-cards.c |    2 -
 drivers/message/i2o/pci.c                   |    2 -
 drivers/net/bonding/bond_main.c             |   32 +++++++++-------------------
 drivers/net/bonding/bonding.h               |    7 +-----
 drivers/pcmcia/i82365.c                     |    1 
 drivers/scsi/dpt_i2o.c                      |    9 ++++---
 drivers/scsi/libata-core.c                  |    2 -
 drivers/scsi/libata-scsi.c                  |    9 +++++++
 drivers/usb/image/microtek.c                |   31 +++++++++++++++++++++------
 drivers/usb/image/microtek.h                |    2 -
 fs/xattr.c                                  |    2 -
 include/linux/cciss_ioctl.h                 |    2 -
 kernel/audit.c                              |    4 ++-
 kernel/ptrace.c                             |    3 +-
 mm/truncate.c                               |    6 ++---
 net/bridge/br_if.c                          |    1 
 net/ipv4/fib_frontend.c                     |    8 +++++--
 sound/pci/nm256/nm256.c                     |   23 +++++++++++++++++---
 28 files changed, 131 insertions(+), 69 deletions(-)

Summary of changes from v2.6.14.3 to v2.6.14.4
==============================================

Adrian Bunk:
      drivers/scsi/dpt_i2o.c: fix a user-after-free
      drivers/message/i2o/pci.c: fix a use-after-free
      drivers/infiniband/core/mad.c: fix a use-after-free

Carlos Silva:
      DVB: BUDGET CI card depends on STV0297 demodulator

Daniel Drake:
      setkeys needs root
      Fix listxattr() for generic security attributes

Dave Jones:
      AGPGART: Fix serverworks TLB flush.

David Gibson:
      Fix crash when ptrace poking hugepage areas

Dmitry Torokhov:
      I8K: fix /proc reporting of blank service tags

Greg Kroah-Hartman:
      Linux 2.6.14.4

Igor Popik:
      i82365: release all resources if no devices are found

Jay Vosburgh:
      bonding: fix feature consolidation

Jeff Garzik:
      libata: locking rewrite (== fix)

Jens Axboe:
      cciss: bug fix for BIG_PASS_THRU

John W. Linville:
      ALSA: nm256: reset workaround for Latitude CSx

Linux Kernel Mailing List:
      cciss: bug fix for hpacucli

Michael Krufky:
      V4L/DVB: Fix analog NTSC for Thomson DTT 761X hybrid tuner

Olaf Rempel:
      BRIDGE: recompute features when adding a new device

Oleg Drokin:
      32bit integer overflow in invalidate_inode_pages2()

Oliver Neukum:
      USB: Adapt microtek driver to new scsi features

Ondrej Zary:
      ide-floppy: software eject not working with LS-120 drive

Pierre Ossman:
      Add try_to_freeze to kauditd

Ricardo Cerqueira:
      V4L/DVB (3135) Fix tuner init for Pinnacle PCTV Stereo

Thomas Graf:
      NETLINK: Fix processing of fib_lookup netlink messages

Thomas Renninger:
      ACPI: fix HP nx8220 boot hang regression


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Linux 2.6.14.4
  2005-12-15  0:50 Linux 2.6.14.4 Greg KH
@ 2005-12-15  0:51 ` Greg KH
  2005-12-18 19:42 ` Linux 2.6.14.4 [intelfb problem] Sebastian Kaergel
  1 sibling, 0 replies; 9+ messages in thread
From: Greg KH @ 2005-12-15  0:51 UTC (permalink / raw)
  To: linux-kernel, stable; +Cc: torvalds

diff --git a/Makefile b/Makefile
index 6e34293..f00339c 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 6
 SUBLEVEL = 14
-EXTRAVERSION = .3
+EXTRAVERSION = .4
 NAME=Affluent Albatross
 
 # *DOCUMENTATION*
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index c6db591..681eb19 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -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)
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index 486b6e1..7bb1f1a 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -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);
 			}
diff --git a/drivers/char/agp/sworks-agp.c b/drivers/char/agp/sworks-agp.c
index a9fb12c..5396897 100644
--- a/drivers/char/agp/sworks-agp.c
+++ b/drivers/char/agp/sworks-agp.c
@@ -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)
diff --git a/drivers/char/i8k.c b/drivers/char/i8k.c
index 6c4b3f9..f3c3aaf 100644
--- a/drivers/char/i8k.c
+++ b/drivers/char/i8k.c
@@ -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_file
 	return 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);
diff --git a/drivers/char/vt_ioctl.c b/drivers/char/vt_ioctl.c
index 1d44f69..24011e7 100644
--- a/drivers/char/vt_ioctl.c
+++ b/drivers/char/vt_ioctl.c
@@ -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 kbsentry 
 	int i, j, k;
 	int ret;
 
+	if (!capable(CAP_SYS_TTY_CONFIG))
+		perm = 0;
+
 	kbs = kmalloc(sizeof(*kbs), GFP_KERNEL);
 	if (!kbs) {
 		ret = -ENOMEM;
diff --git a/drivers/ide/ide-floppy.c b/drivers/ide/ide-floppy.c
index 29c22fc..f53658b 100644
--- a/drivers/ide/ide-floppy.c
+++ b/drivers/ide/ide-floppy.c
@@ -2038,11 +2038,9 @@ static int idefloppy_ioctl(struct inode 
 	struct 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 inode 
 	case 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)
diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c
index a14ca87..96855fc 100644
--- a/drivers/infiniband/core/mad.c
+++ b/drivers/infiniband/core/mad.c
@@ -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;
 }
diff --git a/drivers/media/dvb/ttpci/Kconfig b/drivers/media/dvb/ttpci/Kconfig
index d8bf658..fa5034a 100644
--- a/drivers/media/dvb/ttpci/Kconfig
+++ b/drivers/media/dvb/ttpci/Kconfig
@@ -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
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c
index 4da91d5..7aa8566 100644
--- a/drivers/media/video/cx88/cx88-cards.c
+++ b/drivers/media/video/cx88/cx88-cards.c
@@ -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,
diff --git a/drivers/media/video/saa7134/saa7134-cards.c b/drivers/media/video/saa7134/saa7134-cards.c
index acc7a43..3a85d41 100644
--- a/drivers/media/video/saa7134/saa7134-cards.c
+++ b/drivers/media/video/saa7134/saa7134-cards.c
@@ -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,
diff --git a/drivers/message/i2o/pci.c b/drivers/message/i2o/pci.c
index 66c03e8..81ef306 100644
--- a/drivers/message/i2o/pci.c
+++ b/drivers/message/i2o/pci.c
@@ -421,8 +421,8 @@ static int __devinit i2o_pci_probe(struc
 	i2o_pci_free(c);
 
       free_controller:
-	i2o_iop_free(c);
 	put_device(c->device.parent);
+	i2o_iop_free(c);
 
       disable:
 	pci_disable_device(pdev);
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index f264ff1..519b4a9 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -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_d
 			       NETIF_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
diff --git a/drivers/net/bonding/bonding.h b/drivers/net/bonding/bonding.h
index bbf9da8..1433e91 100644
--- a/drivers/net/bonding/bonding.h
+++ b/drivers/net/bonding/bonding.h
@@ -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; 
 };
 
 /**
diff --git a/drivers/pcmcia/i82365.c b/drivers/pcmcia/i82365.c
index a713015..7d9898f 100644
--- a/drivers/pcmcia/i82365.c
+++ b/drivers/pcmcia/i82365.c
@@ -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;
     }
diff --git a/drivers/scsi/dpt_i2o.c b/drivers/scsi/dpt_i2o.c
index 7235f94..8a603ea 100644
--- a/drivers/scsi/dpt_i2o.c
+++ b/drivers/scsi/dpt_i2o.c
@@ -816,7 +816,7 @@ static int adpt_hba_reset(adpt_hba* pHba
 static 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;
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c
index e5b0199..f9e9973 100644
--- a/drivers/scsi/libata-core.c
+++ b/drivers/scsi/libata-core.c
@@ -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;
diff --git a/drivers/scsi/libata-scsi.c b/drivers/scsi/libata-scsi.c
index 104fd9a..112317e 100644
--- a/drivers/scsi/libata-scsi.c
+++ b/drivers/scsi/libata-scsi.c
@@ -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;
 }
 
diff --git a/drivers/usb/image/microtek.c b/drivers/usb/image/microtek.c
index c84e148..e697dd7 100644
--- a/drivers/usb/image/microtek.c
+++ b/drivers/usb/image/microtek.c
@@ -327,6 +327,18 @@ static inline void mts_urb_abort(struct 
 	usb_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 ur
 	MTS_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 *sr
 			callback(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_inte
 	if (!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_inte
 	usb_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 u
 
 	scsi_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");
-
-
diff --git a/drivers/usb/image/microtek.h b/drivers/usb/image/microtek.h
index 3271deb..926d4bd 100644
--- a/drivers/usb/image/microtek.h
+++ b/drivers/usb/image/microtek.h
@@ -22,7 +22,7 @@ struct mts_transfer_context
 	int 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 */
 };
 
 
diff --git a/fs/xattr.c b/fs/xattr.c
index 3f9c64b..a7bfacf 100644
--- a/fs/xattr.c
+++ b/fs/xattr.c
@@ -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) {
diff --git a/include/linux/cciss_ioctl.h b/include/linux/cciss_ioctl.h
index 424d5e6..6e27f42 100644
--- a/include/linux/cciss_ioctl.h
+++ b/include/linux/cciss_ioctl.h
@@ -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; 
 
diff --git a/kernel/audit.c b/kernel/audit.c
index aefa73a..ddf97e6 100644
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -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);
diff --git a/kernel/ptrace.c b/kernel/ptrace.c
index fcfc456..260165f 100644
--- a/kernel/ptrace.c
+++ b/kernel/ptrace.c
@@ -238,7 +238,8 @@ int access_process_vm(struct task_struct
 		if (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);
diff --git a/mm/truncate.c b/mm/truncate.c
index 60c8764..0dff870 100644
--- a/mm/truncate.c
+++ b/mm/truncate.c
@@ -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);
 				}
 			}
diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c
index defcf6a..975abe2 100644
--- a/net/bridge/br_if.c
+++ b/net/bridge/br_if.c
@@ -366,6 +366,7 @@ int br_add_if(struct net_bridge *br, str
 
 		spin_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);
diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
index e61bc71..bc6f0a3 100644
--- a/net/ipv4/fib_frontend.c
+++ b/net/ipv4/fib_frontend.c
@@ -545,12 +545,16 @@ static void nl_fib_input(struct sock *sk
 	struct 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);
diff --git a/sound/pci/nm256/nm256.c b/sound/pci/nm256/nm256.c
index 5c55a3b..229bced 100644
--- a/sound/pci/nm256/nm256.c
+++ b/sound/pci/nm256/nm256.c
@@ -62,6 +62,7 @@ static int buffer_top[SNDRV_CARDS] = {[0
 static 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, NULL
 MODULE_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(str
 			case 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);

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: Linux 2.6.14.4 [intelfb problem]
  2005-12-15  0:50 Linux 2.6.14.4 Greg KH
  2005-12-15  0:51 ` Greg KH
@ 2005-12-18 19:42 ` Sebastian Kaergel
  2005-12-18 20:51   ` [stable] " Greg KH
  2005-12-18 21:49   ` Antonino A. Daplas
  1 sibling, 2 replies; 9+ messages in thread
From: Sebastian Kaergel @ 2005-12-18 19:42 UTC (permalink / raw)
  To: Greg KH; +Cc: linux-kernel, stable

Hi,

after installing 2.6.14.4 I'm no longer able to use my intelfb-console.

.config is exactly the same as with 2.6.14.3, but 2.6.14.4 doesn't
switch to fb at all. Just the normal console appears.

dmesg output:
<snip>
intelfb: Video mode must be programmed at boot time.
<snip>

lilo.conf:
vga=791
image=/boot/2.6.14.4-3
 append="video=intelfb"

I don't know, why it isn't working, since nothing intelfb or fb related
changed in this release.

thanks,
sebastian

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [stable] Re: Linux 2.6.14.4 [intelfb problem]
  2005-12-18 19:42 ` Linux 2.6.14.4 [intelfb problem] Sebastian Kaergel
@ 2005-12-18 20:51   ` Greg KH
  2005-12-18 22:25     ` Sebastian Kaergel
  2005-12-18 21:49   ` Antonino A. Daplas
  1 sibling, 1 reply; 9+ messages in thread
From: Greg KH @ 2005-12-18 20:51 UTC (permalink / raw)
  To: Sebastian Kaergel; +Cc: Greg KH, linux-kernel, stable

On Sun, Dec 18, 2005 at 08:42:53PM +0100, Sebastian Kaergel wrote:
> Hi,
> 
> after installing 2.6.14.4 I'm no longer able to use my intelfb-console.
> 
> .config is exactly the same as with 2.6.14.3, but 2.6.14.4 doesn't
> switch to fb at all. Just the normal console appears.
> 
> dmesg output:
> <snip>
> intelfb: Video mode must be programmed at boot time.
> <snip>
> 
> lilo.conf:
> vga=791
> image=/boot/2.6.14.4-3
>  append="video=intelfb"
> 
> I don't know, why it isn't working, since nothing intelfb or fb related
> changed in this release.

Any chance you can try applying the different patches that were posted
to lkml to 2.6.14.3 and see which one causes the problem?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Linux 2.6.14.4 [intelfb problem]
  2005-12-18 19:42 ` Linux 2.6.14.4 [intelfb problem] Sebastian Kaergel
  2005-12-18 20:51   ` [stable] " Greg KH
@ 2005-12-18 21:49   ` Antonino A. Daplas
  2005-12-18 22:24     ` Sebastian Kaergel
  1 sibling, 1 reply; 9+ messages in thread
From: Antonino A. Daplas @ 2005-12-18 21:49 UTC (permalink / raw)
  To: Sebastian Kaergel; +Cc: Greg KH, linux-kernel, stable

Sebastian Kaergel wrote:
> Hi,
> 
> after installing 2.6.14.4 I'm no longer able to use my intelfb-console.
> 
> .config is exactly the same as with 2.6.14.3, but 2.6.14.4 doesn't
> switch to fb at all. Just the normal console appears.
> 
> dmesg output:
> <snip>
> intelfb: Video mode must be programmed at boot time.
> <snip>

This means that the BIOS was unable to switch the adapter to graphics mode
with...

> 
> lilo.conf:
> vga=791

...this parameter.

Sometimes, this is just a problem with the bootloader not recognizing
the option parameters.

> image=/boot/2.6.14.4-3
>  append="video=intelfb"

'cat /proc/cmdline' should confirm if your options where actually passed
unchanged to the kernel.

Tony

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Linux 2.6.14.4 [intelfb problem]
  2005-12-18 21:49   ` Antonino A. Daplas
@ 2005-12-18 22:24     ` Sebastian Kaergel
  2005-12-18 23:15       ` Antonino A. Daplas
  0 siblings, 1 reply; 9+ messages in thread
From: Sebastian Kaergel @ 2005-12-18 22:24 UTC (permalink / raw)
  To: Antonino A. Daplas; +Cc: mailing, gregkh, linux-kernel, stable

"Antonino A. Daplas" <adaplas@gmail.com> wrote:
> Sometimes, this is just a problem with the bootloader not recognizing
> the option parameters.
> 
> > image=/boot/2.6.14.4-3
> >  append="video=intelfb"
> 
> 'cat /proc/cmdline' should confirm if your options where actually passed
> unchanged to the kernel.

 $ cat /proc/cmdline 
BOOT_IMAGE=2.6.14.4 ro root=301 lapic video=intelfb

cmdline looks fine

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [stable] Re: Linux 2.6.14.4 [intelfb problem]
  2005-12-18 20:51   ` [stable] " Greg KH
@ 2005-12-18 22:25     ` Sebastian Kaergel
  0 siblings, 0 replies; 9+ messages in thread
From: Sebastian Kaergel @ 2005-12-18 22:25 UTC (permalink / raw)
  To: Greg KH; +Cc: mailing, linux-kernel, stable

Greg KH <greg@kroah.com> wrote:
> Any chance you can try applying the different patches that were posted
> to lkml to 2.6.14.3 and see which one causes the problem?

sure. it'll try and post again.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Linux 2.6.14.4 [intelfb problem]
  2005-12-18 22:24     ` Sebastian Kaergel
@ 2005-12-18 23:15       ` Antonino A. Daplas
  2005-12-19  0:47         ` Sebastian Kaergel
  0 siblings, 1 reply; 9+ messages in thread
From: Antonino A. Daplas @ 2005-12-18 23:15 UTC (permalink / raw)
  To: Sebastian Kaergel; +Cc: gregkh, linux-kernel, stable

Sebastian Kaergel wrote:
> "Antonino A. Daplas" <adaplas@gmail.com> wrote:
>> Sometimes, this is just a problem with the bootloader not recognizing
>> the option parameters.
>>
>>> image=/boot/2.6.14.4-3
>>>  append="video=intelfb"
>> 'cat /proc/cmdline' should confirm if your options where actually passed
>> unchanged to the kernel.
> 
>  $ cat /proc/cmdline 
> BOOT_IMAGE=2.6.14.4 ro root=301 lapic video=intelfb
> 
> cmdline looks fine
> 

No.  You're missing the vga=791 parameter which is required by intelfb (if
connected to a flatpanel).

Why not change the lilo.conf to something like this?

append="vga=791 video=intelfb" # video=intelfb is not required if not passing
                               # parameters to intelfb

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Linux 2.6.14.4 [intelfb problem]
  2005-12-18 23:15       ` Antonino A. Daplas
@ 2005-12-19  0:47         ` Sebastian Kaergel
  0 siblings, 0 replies; 9+ messages in thread
From: Sebastian Kaergel @ 2005-12-19  0:47 UTC (permalink / raw)
  To: Antonino A. Daplas; +Cc: mailing, gregkh, linux-kernel, stable

Hi again,

for some $/%&§"& reason "video mode selection support" was not
configured (although i used the same .config for both kernel).
Doublechecked that everything is working now.

Thanks for your help and sorry for the noise.

sebastian

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2005-12-19  0:47 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-12-15  0:50 Linux 2.6.14.4 Greg KH
2005-12-15  0:51 ` Greg KH
2005-12-18 19:42 ` Linux 2.6.14.4 [intelfb problem] Sebastian Kaergel
2005-12-18 20:51   ` [stable] " Greg KH
2005-12-18 22:25     ` Sebastian Kaergel
2005-12-18 21:49   ` Antonino A. Daplas
2005-12-18 22:24     ` Sebastian Kaergel
2005-12-18 23:15       ` Antonino A. Daplas
2005-12-19  0:47         ` Sebastian Kaergel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox