* 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