Linux 2.6.32.40
Subsystems (57)
I'm announcing the release of the 2.6.32.40 kernel.
All users of the 2.6.32 series must upgrade.
The updated 2.6.32.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/longterm/linux-2.6.32.y.git
and can be browsed at the normal kernel.org git web browser:
http://git.kernel.org/?p=linux/kernel/git/longterm/linux-2.6.32.y.git;a=summarythanks,
greg k-h
------------
Documentation/sound/alsa/HD-Audio-Models.txt | 1 Documentation/usb/proc_usb_info.txt | 34 +++-- Makefile | 2 arch/arm/kernel/sys_oabi-compat.c | 2 arch/m68k/mm/motorola.c | 2 arch/mips/mm/dma-default.c | 28 +++- arch/parisc/mm/init.c | 4 arch/powerpc/boot/Makefile | 2 arch/x86/include/asm/kvm_host.h | 3 arch/x86/include/asm/pvclock.h | 38 ++++++ arch/x86/kernel/cpu/amd.c | 2 arch/x86/kernel/pvclock.c | 3 arch/x86/kvm/x86.c | 48 +++++++- block/blk-sysfs.c | 4 drivers/ata/libata-scsi.c | 24 +++- drivers/ata/sata_via.c | 15 ++ drivers/bluetooth/btusb.c | 9 + drivers/char/agp/generic.c | 19 ++- drivers/char/i8k.c | 7 - drivers/gpu/drm/radeon/atom.c | 6 - drivers/hid/hid-apple.c | 46 +++++++ drivers/hid/hid-core.c | 12 ++ drivers/hid/hid-ids.h | 6 + drivers/hwmon/applesmc.c | 66 +++++++++++ drivers/input/mouse/elantech.c | 142 +++++++++++++++-------- drivers/input/mouse/elantech.h | 8 - drivers/input/mouse/synaptics.c | 35 +++++ drivers/input/mouse/synaptics.h | 4 drivers/input/xen-kbdfront.c | 12 +- drivers/media/dvb/b2c2/flexcop-pci.c | 2 drivers/media/dvb/dvb-usb/dib0700_devices.c | 46 +++++++ drivers/media/dvb/dvb-usb/dvb-usb-ids.h | 1 drivers/mmc/core/core.c | 81 +++++++++---- drivers/mmc/core/host.c | 6 + drivers/mmc/host/sdhci-pci.c | 1 drivers/mmc/host/sdhci.c | 9 + drivers/net/atl1c/atl1c_main.c | 2 drivers/net/bnx2x_main.c | 27 ++-- drivers/net/bonding/bond_3ad.c | 4 drivers/net/bonding/bond_alb.c | 4 drivers/net/bonding/bond_main.c | 4 drivers/net/cxgb3/common.h | 8 - drivers/net/cxgb3/cxgb3_main.c | 25 ++-- drivers/net/e1000/e1000_main.c | 162 +++++++++++++++------------ drivers/net/e1000e/ich8lan.c | 11 + drivers/net/igbvf/igbvf.h | 1 drivers/net/ipg.c | 4 drivers/net/myri10ge/myri10ge.c | 4 drivers/net/netx-eth.c | 3 drivers/net/netxen/netxen_nic.h | 6 + drivers/net/netxen/netxen_nic_init.c | 6 - drivers/net/netxen/netxen_nic_main.c | 4 drivers/net/niu.c | 17 +- drivers/net/pcmcia/pcnet_cs.c | 7 + drivers/net/pppol2tp.c | 3 drivers/net/spider_net.c | 1 drivers/net/tehuti.c | 4 drivers/net/tokenring/tms380tr.c | 2 drivers/net/tulip/tulip_core.c | 1 drivers/net/virtio_net.c | 48 ++++---- drivers/net/wireless/ath/regd_common.h | 1 drivers/net/wireless/b43/sdio.c | 3 drivers/net/wireless/iwlwifi/iwl-5000.c | 2 drivers/net/wireless/iwlwifi/iwl-tx.c | 8 + drivers/net/wireless/p54/txrx.c | 2 drivers/net/wireless/rt2x00/rt2400pci.c | 2 drivers/net/wireless/rt2x00/rt2500pci.c | 3 drivers/net/wireless/rt2x00/rt2500usb.c | 13 +- drivers/net/wireless/rt2x00/rt2800usb.c | 2 drivers/net/wireless/rt2x00/rt2x00.h | 7 + drivers/net/wireless/rt2x00/rt2x00dev.c | 15 ++ drivers/net/wireless/rt2x00/rt2x00queue.c | 6 - drivers/net/wireless/rt2x00/rt61pci.c | 2 drivers/net/wireless/rt2x00/rt73usb.c | 2 drivers/pci/intel-iommu.c | 23 +++ drivers/platform/x86/dell-laptop.c | 15 ++ drivers/s390/block/dasd_eckd.c | 2 drivers/scsi/device_handler/scsi_dh_emc.c | 8 - drivers/scsi/mpt2sas/mpt2sas_ctl.c | 23 +++ drivers/scsi/mpt2sas/mpt2sas_scsih.c | 4 drivers/scsi/pmcraid.c | 3 drivers/scsi/scsi_lib.c | 7 + drivers/scsi/scsi_sysfs.c | 16 +- drivers/serial/imx.c | 3 drivers/staging/rtl8192su/r8192S_firmware.c | 5 drivers/staging/rtl8192su/r8192U_core.c | 120 +++++++++++++++----- drivers/staging/rtl8192su/r819xU_cmdpkt.c | 6 + drivers/staging/usbip/vhci_hcd.c | 2 drivers/usb/core/devices.c | 10 + drivers/usb/core/hub.c | 15 +- drivers/usb/musb/musb_core.c | 1 drivers/video/backlight/mbp_nvidia_bl.c | 18 +++ fs/btrfs/volumes.c | 4 fs/cifs/inode.c | 12 +- fs/gfs2/quota.c | 132 +++++++++++----------- fs/nfs/inode.c | 26 ++-- fs/nfs/nfs4proc.c | 43 ++++++- fs/nfs/nfs4state.c | 4 fs/nfs/super.c | 9 + fs/nfsd/vfs.c | 9 + fs/partitions/ldm.c | 16 ++ fs/partitions/osf.c | 12 +- fs/ubifs/recovery.c | 26 ++++ include/linux/mmc/host.h | 3 include/net/af_unix.h | 2 include/net/mac80211.h | 6 + init/Kconfig | 1 init/main.c | 12 ++ net/can/bcm.c | 7 + net/can/raw.c | 7 + net/econet/af_econet.c | 62 +++++----- net/ipv4/ip_output.c | 9 + net/ipv6/addrconf.c | 3 net/mac80211/main.c | 2 net/phonet/pn_dev.c | 3 net/sunrpc/xprtsock.c | 28 +++- net/unix/af_unix.c | 53 +++++++- net/unix/garbage.c | 9 + scripts/kconfig/conf.c | 2 sound/pci/hda/patch_cirrus.c | 44 +++++++ sound/ppc/tumbler.c | 9 + sound/soc/codecs/wm_hubs.c | 8 - sound/synth/emux/emux_hwdep.c | 3 tools/perf/Makefile | 75 ++++++++---- 124 files changed, 1554 insertions(+), 524 deletions(-)
Abhijith Das (2):
GFS2: Fix writing to non-page aligned gfs2_quota structures
GFS2: BUG in gfs2_adjust_quota
Alan Stern (3):
USB: fix regression in usbip by setting has_tt flag
USB: don't enable remote wakeup by default
USB: teach "devices" file about Wireless and SuperSpeed USB
Alex Deucher (1):
drm/radeon/kms: fix bad shift in atom iio table parser
Alex Williamson (2):
intel-iommu: Unlink domain from iommu
intel-iommu: Fix get_domain_for_dev() error path
Andy Chittenden (1):
SUNRPC: fix NFS client over TCP hangs due to packet loss (Bug 16494)
Arnaldo Carvalho de Melo (2):
perf tools: Move QUIET_STDERR def to before first use perf tools: Check if /dev/null can be used as the -o gcc argument
Artem Bityutskiy (1):
UBIFS: fix master node recovery
Bart Hartgers (1):
sata_via: Delay on vt6420 when starting ATAPI DMA write
Ben Dooks (1):
mmc: sdhci: Check mrq->cmd in sdhci_tasklet_finish
Ben Hutchings (15):
kconfig: Avoid buffer underrun in choice input
bnx2x: declare MODULE_FIRMWARE
cxgb3: declare MODULE_FIRMWARE
myri10ge: declare MODULE_FIRMWARE
netx: declare MODULE_FIRMWARE
pcnet-cs: declare MODULE_FIRMWARE
spider-net: declare MODULE_FIRMWARE
tms380tr: declare MODULE_FIRMWARE
Staging: rtl8192su: Clean up in case of an error in module initialisation
Staging: rtl8192su: Fix procfs code for interfaces not named wlan0
ALSA: emux: Add trivial compat ioctl handler
btrfs: Require CAP_SYS_ADMIN for filesystem rebalance
niu: Fix kernel buffer overflow for ETHTOOL_GRXCLSRLALL powerpc/boot/dts: Install dts from the right directory
tehuti: Firmware filename is tehuti/bdx.bin
Bernhard Froemel (1):
hwmon: (applesmc) Add generic support for MacBook Pro 6
Boris Ostrovsky (1):
x86, AMD: Fix APIC timer erratum 400 affecting K8 Rev.A-E processors
Bruce Allan (1):
e1000e: Reset 82577/82578 PHY before first PHY register read
Bruce Rogers (1):
virtio_net: Add schedule check to napi_enable call
Chris Ball (2):
mmc: sdhci-pci: Fix error case in sdhci_pci_probe_slot()
mmc: sdhci: Check mrq != NULL in sdhci_tasklet_finish
Christian Lamparter (1):
ath: add missing regdomain pair 0x5c mapping
Dan Rosenberg (3):
pmcraid: reject negative request size
mpt2sas: prevent heap overflows and unchecked reads
ARM: 6891/1: prevent heap corruption in OABI semtimedop
Dan Streetman (1):
USB: retain USB device power/wakeup setting across reconfiguration
Dave Jones (1):
can: Add missing socket check in can/bcm release.
David Rientjes (1):
set memory ranges in N_NORMAL_MEMORY when onlined
David Woodhouse (1):
intel-iommu: Force-disable IOMMU for iGFX on broken Cantiga revisions.
Dhananjay Phadke (1):
netxen: module firmware hints
Dmitry Torokhov (3):
Input: elantech - do not advertise relative events
Input: elantech - use all 3 bytes when checking version
Input: elantech - relax signature checks
Edgar (gimli) Hucek (4):
ALSA: hda - MacBookAir3,1(3,2) alsa support
Bluetooth: Add MacBookAir3,1(2) support
backlight: MacBookAir3,1(3,2) mbp-nvidia-bl support
HID: add MacBookAir 3,1 and 3,2 support
Edgar Hucek (1):
hwmon: (applesmc) Add MacBookAir3,1(3,2) support
Eric Dumazet (2):
af_unix: limit recursion level
af_unix: limit unix_tot_inflight
Eric W. Biederman (1):
af_unix: Only allow recv on connected seqpacket sockets.
Erik Andren (1):
dell-laptop: Add another Dell laptop to the DMI whitelist
FUJITA Tomonori (1):
mpt2sas: fix the incorrect scsi_dma_map error checking
Felipe Balbi (1):
usb: musb: core: set has_tt flag
Florian Ragwitz (3):
Input: elantech - fix firmware version check
Input: elantech - allow forcing Elantech protocol
Input: elantech - ignore high bits in the position coordinates
Florian Schilhabel (3):
Staging: rtl8192su: check for skb == NULL
Staging: rtl8192su: remove device ids
Staging: rtl8192su: add device ids
Fry, Donald H (1):
iwlagn: Support new 5000 microcode.
Gertjan van Wingerde (3):
mac80211: Add define for TX headroom reserved by mac80211 itself.
rt2x00: Centralize setting of extra TX headroom requested by rt2x00.
rt2x00: Properly request tx headroom for alignment operations.
Greg Kroah-Hartman (1):
Linux 2.6.32.40
Greg Rose (1):
Remove extra struct page member from the buffer info structure
Guennadi Liakhovetski (1):
wireless: b43: fix error path in SDIO
Hagen Paul Pfeifer (1):
econet: Fix redeclaration of symbol len
Hannes Reinecke (1):
scsi_dh_emc: fix mode select request setup
Henrik Rydberg (2):
hwmon: (applesmc) Add support for MacBook Pro 5,3 and 5,4
hwmon: (applesmc) Add generic support for MacBook Pro 7
Herbert Xu (1):
udp: Fix bogus UFO packet generation
Igor Mammedov (1):
Input: xen-kbdfront - fix mouse getting stuck after save/restore
James Bottomley (3):
slub: fix panic with DISCONTIGMEM
put stricter guards on queue dead checks
fix oops in scsi_run_queue()
James Chapman (1):
l2tp: Fix UDP socket reference count bugs in the pppol2tp driver
Jason Conti (1):
p54: Initialize extra_len in p54_tx_80211
Jeff Layton (1):
nfs: don't lose MS_SYNCHRONOUS on remount of noac mount
Jeff Mahoney (1):
ipg: Remove device claimed by dl2k from pci id table
Jesse Brandeburg (1):
e1000: fix Tx hangs by disabling 64-bit DMA
Jie Yang (1):
atl1c: duplicate atl1c_get_tpd
Jim Bos (2):
i8k: Tell gcc that *regs gets clobbered
Fix gcc 4.5.1 miscompiling drivers/char/i8k.c (again)
Jovi Zhang (1):
nfs: fix compilation warning
Justin P. Mattock (1):
hwmon: (applesmc) Add iMac9,1 and MacBookPro2,2 support
Kyle McMartin (1):
perf symbols: allow forcing use of cplus_demangle
Larry Finger (1):
b43: Fix warning at drivers/mmc/core/core.c:237 in mmc_wait_for_cmd
Linus Torvalds (1):
Increase OSF partition limit from 8 to 18
Liu Yuan (1):
block, blk-sysfs: Fix an err return path in blk_register_queue()
Mark Brown (1):
ASoC: Fix output PGA enabling in wm_hubs CODECs
Maxim Levitsky (1):
mmc: fix all hangs related to mmc/sd card insert/removal during suspend/resume
Michael Cree (1):
perf tools: Test -fstack-protector-all compiler option for inclusion in CFLAGS
Michael Müller (1):
V4L/DVB: Add Elgato EyeTV Diversity to dibcom driver
Michael S. Tsirkin (4):
perf tools: Support static build
perf tools: Add V=2 option to help debug config issues perf tools: Suggest static libraries as well
perf: Use default compiler mode by default
Michael Schmitz (1):
m68k/mm: Set all online nodes in N_NORMAL_MEMORY
Mike Christie (1):
scsi_dh_emc: request flag cleanup
Neil Horman (2):
nfs4: Ensure that ACL pages sent over NFS were not allocated from the slab (v3)
bonding: Ensure that we unshare skbs prior to calling pskb_may_pull
Nobuhiro Iwamatsu (2):
Bluetooth: Add support Bluetooth controller of MacbookPro 6,2
Bluetooth: Add support Bluetooth controller of MacbookPro 7,1
Oliver Hartkopp (1):
can: add missing socket check in can/raw release
Ondrej Zary (1):
rt2500usb: fallback to SW encryption for TKIP+AES
Oskar Schirmer (1):
cifs: fix another memleak, in cifs_root_iget
Patrick Boettcher (1):
FLEXCOP-PCI: fix __xlate_proc_name-warning for flexcop-pci
Pavel Roskin (1):
rt2x00: use correct headroom for transmission
Peter Zijlstra (1):
init, sched: Fix race between init and kthreadd
Phil Blundell (1):
econet: fix CVE-2010-3848
Rafael Avila de Espindola (1):
ALSA: hda - Add support for the new 27 inch IMacs
Ralf Baechle (1):
MIPS: DMA: Fix computation of DMA flags from device's coherent_dma_mask.
Randy Dunlap (1):
perf tools: Display better error messages on missing packages
Rezwanul Kabir (1):
dell-laptop: Add another Dell laptop family to the DMI whitelist
Risto Suominen (2):
ALSA: powermac - Reverse HP detection on G4 DA
ALSA: powermac - Lineout detection on G4 DA
Romain Francoise (1):
ipv6: Silence privacy extensions initialization
Ron Murray (1):
Please add support for Microsoft MN-120 PCMCIA network card
Rusty Russell (1):
virtio_net: fix oom handling on tx
Rémi Denis-Courmont (1):
Phonet: device notifier only runs on initial namespace
Sachin Prabhu (1):
Open with O_CREAT flag set fails to open existing files on non writable directories
Stanislaw Gruszka (1):
iwlwifi: fix skb usage after free
Stefan Haberland (1):
dasd: correct device table
Steven Rostedt (1):
perf tools: Add 'make DEBUG=1' to remove the -O6 cflag
Steven Whitehouse (1):
GFS2: Clean up gfs2_adjust_quota() and do_glock()
Takashi Iwai (2):
Input: Add support of Synaptics Clickpad device
ALSA: hda - Add model=mbp55 entry for MacBookPro 7,1
Tejun Heo (1):
libata: set queue DMA alignment to sector size for ATAPI too
Timo Warns (2):
fs/partitions/ldm.c: fix oops caused by corrupted partition table Fix corrupted OSF partition table parsing
Trond Myklebust (2):
NFS: nfs_wcc_update_inode() should set nfsi->attr_gencount NFSv4.1: Ensure state manager thread dies on last umount
Uwe Kleine-König (2):
serial/imx: read cts state only after acking cts change irq
mmc: build fix: mmc_pm_notify is only available with CONFIG_PM=y
Vasiliy Kulikov (2):
agp: fix arbitrary kernel memory writes
agp: fix OOM and buffer overflow
Vince Weaver (1):
ALSA: hda - MacBookPro 5,3 line-in support
Zachary Amsden (3):
x86: pvclock: Move scale_delta into common header
KVM: x86: Fix a possible backwards warp of kvmclock
KVM: x86: Fix kvmclock bug
Éric Piel (1):
Input: elantech - discard the first 2 positions on some firmwares
Documentation/sound/alsa/HD-Audio-Models.txt +1 -0
@@ -401,4 +401,5 @@ STAC9872 Cirrus Logic CS4206/4207 ======================== mbp55 MacBook Pro 5,5 + imac27 IMac 27 Inch auto BIOS setup (default)
Documentation/usb/proc_usb_info.txt +22 -12
@@ -1,12 +1,17 @@ /proc/bus/usb filesystem output =============================== -(version 2003.05.30) +(version 2010.09.13) The usbfs filesystem for USB devices is traditionally mounted at /proc/bus/usb. It provides the /proc/bus/usb/devices file, as well as the /proc/bus/usb/BBB/DDD files. +In many modern systems the usbfs filsystem isn't used at all. Instead +USB device nodes are created under /dev/usb/ or someplace similar. The +"devices" file is available in debugfs, typically as +/sys/kernel/debug/usb/devices. + **NOTE**: If /proc/bus/usb appears empty, and a host controller driver has been linked, then you need to mount the
@@ -106,8 +111,8 @@ Legend: Topology info: -T: Bus=dd Lev=dd Prnt=dd Port=dd Cnt=dd Dev#=ddd Spd=ddd MxCh=dd -| | | | | | | | |__MaxChildren +T: Bus=dd Lev=dd Prnt=dd Port=dd Cnt=dd Dev#=ddd Spd=dddd MxCh=dd +| | | | | | | | |__MaxChildren | | | | | | | |__Device Speed in Mbps | | | | | | |__DeviceNumber | | | | | |__Count of devices at this level
@@ -120,8 +125,13 @@ T: Bus=dd Lev=dd Prnt=dd Port=dd Cnt=dd Dev#=ddd Spd=ddd MxCh=dd Speed may be: 1.5 Mbit/s for low speed USB 12 Mbit/s for full speed USB - 480 Mbit/s for high speed USB (added for USB 2.0) + 480 Mbit/s for high speed USB (added for USB 2.0); + also used for Wireless USB, which has no fixed speed + 5000 Mbit/s for SuperSpeed USB (added for USB 3.0) + For reasons lost in the mists of time, the Port number is always + too low by 1. For example, a device plugged into port 4 will + show up with "Port=03". Bandwidth info: B: Alloc=ddd/ddd us (xx%), #Int=ddd, #Iso=ddd
@@ -291,7 +301,7 @@ Here's an example, from a system which has a UHCI root hub, an external hub connected to the root hub, and a mouse and a serial converter connected to the external hub. -T: Bus=00 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 +T: Bus=00 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 B: Alloc= 28/900 us ( 3%), #Int= 2, #Iso= 0 D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 0.00
@@ -301,21 +311,21 @@ C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=255ms -T: Bus=00 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 4 +T: Bus=00 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 4 D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0451 ProdID=1446 Rev= 1.00 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=255ms -T: Bus=00 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=1.5 MxCh= 0 +T: Bus=00 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=1.5 MxCh= 0 D: Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=04b4 ProdID=0001 Rev= 0.00 C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=mouse E: Ad=81(I) Atr=03(Int.) MxPS= 3 Ivl= 10ms -T: Bus=00 Lev=02 Prnt=02 Port=02 Cnt=02 Dev#= 4 Spd=12 MxCh= 0 +T: Bus=00 Lev=02 Prnt=02 Port=02 Cnt=02 Dev#= 4 Spd=12 MxCh= 0 D: Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0565 ProdID=0001 Rev= 1.08 S: Manufacturer=Peracom Networks, Inc.
@@ -330,12 +340,12 @@ E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl= 8ms Selecting only the "T:" and "I:" lines from this (for example, by using "procusb ti"), we have: -T: Bus=00 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 -T: Bus=00 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 4 +T: Bus=00 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 +T: Bus=00 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 4 I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub -T: Bus=00 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=1.5 MxCh= 0 +T: Bus=00 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=1.5 MxCh= 0 I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=mouse -T: Bus=00 Lev=02 Prnt=02 Port=02 Cnt=02 Dev#= 4 Spd=12 MxCh= 0 +T: Bus=00 Lev=02 Prnt=02 Port=02 Cnt=02 Dev#= 4 Spd=12 MxCh= 0 I: If#= 0 Alt= 0 #EPs= 3 Cls=00(>ifc ) Sub=00 Prot=00 Driver=serial
Makefile +1 -1
@@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 32 -EXTRAVERSION = .39 +EXTRAVERSION = .40 NAME = Man-Eating Seals of Antiquity # *DOCUMENTATION*
arch/arm/kernel/sys_oabi-compat.c +1 -1
@@ -311,7 +311,7 @@ asmlinkage long sys_oabi_semtimedop(int semid,long err;int i; -if (nsops <1 ) +if (nsops <1 || nsops >SEMOPM )return -EINVAL ; sops =kmalloc (sizeof (*sops) * nsops,GFP_KERNEL );if (!sops)
arch/m68k/mm/motorola.c +2 -0
@@ -299,6 +299,8 @@ void __init paging_init(void) zones_size[ZONE_DMA ] = m68k_memory[i].size >>PAGE_SHIFT ;free_area_init_node (i, zones_size, m68k_memory[i].addr >>PAGE_SHIFT ,NULL ); +if (node_present_pages (i)) +node_set_state (i,N_NORMAL_MEMORY ); } }
arch/mips/mm/dma-default.c +20 -8
@@ -43,27 +43,39 @@ static inline int cpu_is_noncoherent_r10000(struct device *dev)static gfp_t massage_gfp_flags (const struct device *dev,gfp_t gfp) { +gfp_t dma_flag; +/* ignore region specifiers */ gfp &= ~(__GFP_DMA | __GFP_DMA32 | __GFP_HIGHMEM); -#ifdef CONFIG_ZONE_DMA +#ifdef CONFIG_ISA if (dev ==NULL ) - gfp |= __GFP_DMA; -else if (dev->coherent_dma_mask <DMA_BIT_MASK (24 )) - gfp |= __GFP_DMA; + dma_flag = __GFP_DMA; else#endif -#ifdef CONFIG_ZONE_DMA32 +#if defined(CONFIG_ZONE_DMA32 ) && defined(CONFIG_ZONE_DMA )if (dev->coherent_dma_mask <DMA_BIT_MASK (32 )) - gfp |= __GFP_DMA32; + dma_flag = __GFP_DMA; +else if (dev->coherent_dma_mask <DMA_BIT_MASK (64 )) + dma_flag = __GFP_DMA32; + else +#endif +#if defined(CONFIG_ZONE_DMA32 ) && !defined(CONFIG_ZONE_DMA ) +if (dev->coherent_dma_mask <DMA_BIT_MASK (64 )) + dma_flag = __GFP_DMA32; + else +#endif +#if defined(CONFIG_ZONE_DMA ) && !defined(CONFIG_ZONE_DMA32 ) +if (dev->coherent_dma_mask <DMA_BIT_MASK (64 )) + dma_flag = __GFP_DMA; else#endif - ; + dma_flag =0 ;/* Don't invoke OOM killer */ gfp |= __GFP_NORETRY; -return gfp; +return gfp | dma_flag; } void *dma_alloc_noncoherent(struct device *dev, size_t size,
arch/parisc/mm/init.c +3 -1
@@ -265,8 +265,10 @@ static void __init setup_bootmem(void) }memset (pfnnid_map,0xff ,sizeof (pfnnid_map)); -for (i =0 ; i < npmem_ranges; i++) +for (i =0 ; i < npmem_ranges; i++) { +node_set_state (i,N_NORMAL_MEMORY );node_set_online (i); + }#endif /*
arch/powerpc/boot/Makefile +1 -1
@@ -364,7 +364,7 @@ INSTALL := install extra-installed := $(patsubst $(obj)/%, $(DESTDIR)$(WRAPPER_OBJDIR)/%, $(extra-y)) hostprogs-installed := $(patsubst %, $(DESTDIR)$(WRAPPER_BINDIR)/%, $(hostprogs-y)) wrapper-installed := $(DESTDIR)$(WRAPPER_BINDIR)/wrapper -dts-installed := $(patsubst $(obj)/dts/%, $(DESTDIR)$(WRAPPER_DTSDIR)/%, $(wildcard $(obj)/dts/*.dts)) +dts-installed := $(patsubst $(dtstree)/%, $(DESTDIR)$(WRAPPER_DTSDIR)/%, $(wildcard $(dtstree)/*.dts)) all-installed := $(extra-installed) $(hostprogs-installed) $(wrapper-installed) $(dts-installed)
arch/x86/include/asm/kvm_host.h +3 -0
@@ -357,6 +357,9 @@ struct kvm_vcpu_arch {struct page *time_page;bool singlestep;/* guest is single stepped by KVM */ +u64 last_guest_tsc; +u64 last_kernel_ns; +bool nmi_pending;bool nmi_injected;
arch/x86/include/asm/pvclock.h +38 -0
@@ -12,4 +12,42 @@ void pvclock_read_wallclock(struct pvclock_wall_clock *wall, struct timespec *ts);void pvclock_resume (void ); +/* +* Scale a 64-bit delta by scaling and multiplying by a 32-bit fraction, +* yielding a 64-bit result. +*/ +static inline u64 pvclock_scale_delta (u64 delta,u32 mul_frac,int shift) +{ +u64 product; +#ifdef __i386__ +u32 tmp1, tmp2; +#endif + +if (shift <0 ) + delta >>= -shift; +else + delta <<= shift; + +#ifdef __i386__ + __asm__ ( +"mul %5 ; " +"mov %4,%%eax ; " +"mov %%edx,%4 ; " +"mul %5 ; " +"xor %5,%5 ; " +"add %4,%%eax ; " +"adc %5,%%edx ; " + :"=A" (product),"=r" (tmp1),"=r" (tmp2) + :"a" ((u32 )delta),"1" ((u32)(delta >>32 )),"2" (mul_frac) ); +#elif defined(__x86_64__) + __asm__ ( +"mul %%rdx ; shrd $32,%%rdx,%%rax" + :"=a" (product) :"0" (delta),"d" ((u64 )mul_frac) ); +#else +#error implement me! +#endif + +return product; +} +#endif /* _ASM_X86_PVCLOCK_H */
arch/x86/kernel/cpu/amd.c +1 -1
@@ -653,7 +653,7 @@ cpu_dev_register(amd_cpu_dev);*/ const int amd_erratum_400[] = -AMD_OSVW_ERRATUM (1 ,AMD_MODEL_RANGE (0xf ,0x41 ,0x2 ,0xff ,0xf ), +AMD_OSVW_ERRATUM (1 ,AMD_MODEL_RANGE (0x0f ,0x4 ,0x2 ,0xff ,0xf ),AMD_MODEL_RANGE (0x10 ,0x2 ,0x1 ,0xff ,0xf ));
arch/x86/kernel/pvclock.c +2 -1
@@ -74,7 +74,8 @@ static inline u64 scale_delta(u64 delta, u32 mul_frac, int shift)static u64 pvclock_get_nsec_offset (struct pvclock_shadow_time *shadow) {u64 delta =native_read_tsc () - shadow->tsc_timestamp; -return scale_delta (delta, shadow->tsc_to_nsec_mul, shadow->tsc_shift); +return pvclock_scale_delta (delta, shadow->tsc_to_nsec_mul, + shadow->tsc_shift); }/*
arch/x86/kvm/x86.c +45 -3
78 lines not on this page · raw message
block/blk-sysfs.c +3 -1
@@ -440,8 +440,10 @@ int blk_register_queue(struct gendisk *disk)return ret; ret =kobject_add (&q->kobj,kobject_get (&dev->kobj),"%s" ,"queue" ); -if (ret <0 ) +if (ret <0 ) { +blk_trace_remove_sysfs (dev);return ret; + }kobject_uevent (&q->kobj,KOBJ_ADD );
drivers/ata/libata-scsi.c +18 -6
@@ -1099,13 +1099,13 @@ static int ata_scsi_dev_config(struct scsi_device *sdev,/* configure max sectors */ blk_queue_max_sectors (sdev->request_queue, dev->max_sectors); + sdev->sector_size =ATA_SECT_SIZE ; +if (dev->class ==ATA_DEV_ATAPI ) {struct request_queue *q = sdev->request_queue;void *buf; -/* set the min alignment and padding */ -blk_queue_update_dma_alignment (sdev->request_queue, -ATA_DMA_PAD_SZ -1 ); +/* set DMA padding */ blk_queue_update_dma_pad (sdev->request_queue,ATA_DMA_PAD_SZ -1 );
@@ -1119,12 +1119,24 @@ static int ata_scsi_dev_config(struct scsi_device *sdev,blk_queue_dma_drain (q, atapi_drain_needed, buf,ATAPI_MAX_DRAIN ); }else { -/* ATA devices must be sector aligned */ -blk_queue_update_dma_alignment (sdev->request_queue, -ATA_SECT_SIZE -1 ); sdev->manage_start_stop =1 ; } +/* +* ata_pio_sectors() expects buffer for each sector to not cross +* page boundary. Enforce it by requiring buffers to be sector +* aligned, which works iff sector_size is not larger than +* PAGE_SIZE. ATAPI devices also need the alignment as +* IDENTIFY_PACKET is executed as ATA_PROT_PIO. +*/ +if (sdev->sector_size >PAGE_SIZE ) +ata_dev_printk (dev,KERN_WARNING , +"sector_size=%u > PAGE_SIZE, PIO may malfunction\n" , + sdev->sector_size); + +blk_queue_update_dma_alignment (sdev->request_queue, + sdev->sector_size -1 ); +if (dev->flags &ATA_DFLAG_AN )set_bit (SDEV_EVT_MEDIA_CHANGE , sdev->supported_events);
drivers/ata/sata_via.c +15 -0
@@ -40,6 +40,8 @@#include <linux/blkdev.h> #include <linux/delay.h> #include <linux/device.h> +#include <scsi/scsi.h> +#include <scsi/scsi_cmnd.h> #include <scsi/scsi_host.h> #include <linux/libata.h>
@@ -80,6 +82,7 @@ static int vt8251_scr_write(struct ata_link *link, unsigned int scr, u32 val);static void svia_tf_load (struct ata_port *ap,const struct ata_taskfile *tf);static void svia_noop_freeze (struct ata_port *ap);static int vt6420_prereset (struct ata_link *link,unsigned long deadline); +static void vt6420_bmdma_start (struct ata_queued_cmd *qc);static int vt6421_pata_cable_detect (struct ata_port *ap);static void vt6421_set_pio_mode (struct ata_port *ap,struct ata_device *adev);static void vt6421_set_dma_mode (struct ata_port *ap,struct ata_device *adev);
@@ -121,6 +124,7 @@ static struct ata_port_operations vt6420_sata_ops = { .inherits = &svia_base_ops, .freeze = svia_noop_freeze, .prereset = vt6420_prereset, + .bmdma_start = vt6420_bmdma_start, };static struct ata_port_operations vt6421_pata_ops = {
@@ -377,6 +381,17 @@ static int vt6420_prereset(struct ata_link *link, unsigned long deadline)return 0 ; } +static void vt6420_bmdma_start (struct ata_queued_cmd *qc) +{ +struct ata_port *ap = qc->ap; +if ((qc->tf.command ==ATA_CMD_PACKET ) && + (qc->scsicmd->sc_data_direction ==DMA_TO_DEVICE )) { +/* Prevents corruption on some ATAPI burners */ +ata_sff_pause (ap); + } +ata_bmdma_start (qc); +} +static int vt6421_pata_cable_detect (struct ata_port *ap) {struct pci_dev *pdev =to_pci_dev (ap->host->dev);
drivers/bluetooth/btusb.c +9 -0
@@ -59,9 +59,18 @@ static struct usb_device_id btusb_table[] = {/* Generic Bluetooth USB device */ { USB_DEVICE_INFO(0xe0, 0x01, 0x01) }, +/* Apple MacBookPro 7,1 */ + { USB_DEVICE(0x05ac, 0x8213) }, +/* Apple iMac11,1 */ { USB_DEVICE(0x05ac, 0x8215) }, +/* Apple MacBookPro6,2 */ + { USB_DEVICE(0x05ac, 0x8218) }, + +/* Apple MacBookAir3,1, MacBookAir3,2 */ + { USB_DEVICE(0x05ac, 0x821b) }, +/* Apple MacBookPro8,2 */ { USB_DEVICE(0x05ac, 0x821a) },
drivers/char/agp/generic.c +15 -4
@@ -123,6 +123,9 @@ static struct agp_memory *agp_create_user_memory(unsigned long num_agp_pages)struct agp_memory *new;unsigned long alloc_size = num_agp_pages*sizeof (struct page *); +if (INT_MAX /sizeof (struct page *) < num_agp_pages) +return NULL ; + new =kzalloc (sizeof (struct agp_memory ),GFP_KERNEL );if (new ==NULL )return NULL ;
@@ -242,11 +245,14 @@ struct agp_memory *agp_allocate_memory(struct agp_bridge_data *bridge,int scratch_pages;struct agp_memory *new;size_t i; +int cur_memory;if (!bridge)return NULL ; -if ((atomic_read (&bridge->current_memory_agp) + page_count) > bridge->max_memory_agp) + cur_memory =atomic_read (&bridge->current_memory_agp); +if ((cur_memory + page_count > bridge->max_memory_agp) || + (cur_memory + page_count < page_count))return NULL ;if (type >=AGP_USER_TYPES ) {
@@ -1123,8 +1129,8 @@ int agp_generic_insert_memory(struct agp_memory * mem, off_t pg_start, int type)return -EINVAL ; } -/* AK: could wrap */ -if ((pg_start + mem->page_count) > num_entries) +if (((pg_start + mem->page_count) > num_entries) || + ((pg_start + mem->page_count) < pg_start))return -EINVAL ; j = pg_start;
@@ -1158,7 +1164,7 @@ int agp_generic_remove_memory(struct agp_memory *mem, off_t pg_start, int type) {size_t i;struct agp_bridge_data *bridge; -int mask_type; +int mask_type, num_entries; bridge = mem->bridge;if (!bridge)
@@ -1170,6 +1176,11 @@ int agp_generic_remove_memory(struct agp_memory *mem, off_t pg_start, int type)if (type != mem->type)return -EINVAL ; + num_entries =agp_num_entries (); +if (((pg_start + mem->page_count) > num_entries) || + ((pg_start + mem->page_count) < pg_start)) +return -EINVAL ; + mask_type = bridge->driver->agp_type_to_mask_type (bridge, type);if (mask_type !=0 ) {/* The generic routines know nothing of memory types */
drivers/char/i8k.c +4 -3
@@ -119,7 +119,7 @@ static int i8k_smm(struct smm_regs *regs)int eax = regs->eax;#if defined(CONFIG_X86_64 ) - asm("pushq %%rax\n\t" + asmvolatile ("pushq %%rax\n\t" "movl 0(%%rax),%%edx\n\t" "pushq %%rdx\n\t" "movl 4(%%rax),%%ebx\n\t"
@@ -145,7 +145,7 @@ static int i8k_smm(struct smm_regs *regs) : "a"(regs) : "%ebx", "%ecx", "%edx", "%esi", "%edi", "memory");#else - asm("pushl %%eax\n\t" + asmvolatile ("pushl %%eax\n\t" "movl 0(%%eax),%%edx\n\t" "push %%edx\n\t" "movl 4(%%eax),%%ebx\n\t"
@@ -166,7 +166,8 @@ static int i8k_smm(struct smm_regs *regs) "movl %%edx,0(%%eax)\n\t" "lahf\n\t" "shrl $8,%%eax\n\t" - "andl $1,%%eax\n":"=a"(rc) + "andl $1,%%eax\n" + :"=a"(rc) : "a"(regs) : "%ebx", "%ecx", "%edx", "%esi", "%edi", "memory");#endif
drivers/gpu/drm/radeon/atom.c +3 -3
@@ -126,7 +126,7 @@ static uint32_t atom_iio_execute(struct atom_context *ctx, int base,case ATOM_IIO_MOVE_INDEX : temp &= ~((0xFFFFFFFF >> (32 -CU8 (base +1 ))) << -CU8 (base +2 )); +CU8 (base +3 )); temp |= ((index >>CU8 (base +2 )) & (0xFFFFFFFF >> (32 - CU8(base + 1)))) << CU8(base +
@@ -136,7 +136,7 @@ static uint32_t atom_iio_execute(struct atom_context *ctx, int base,case ATOM_IIO_MOVE_DATA : temp &= ~((0xFFFFFFFF >> (32 -CU8 (base +1 ))) << -CU8 (base +2 )); +CU8 (base +3 )); temp |= ((data >>CU8 (base +2 )) & (0xFFFFFFFF >> (32 - CU8(base + 1)))) << CU8(base +
@@ -146,7 +146,7 @@ static uint32_t atom_iio_execute(struct atom_context *ctx, int base,case ATOM_IIO_MOVE_ATTR : temp &= ~((0xFFFFFFFF >> (32 -CU8 (base +1 ))) << -CU8 (base +2 )); +CU8 (base +3 )); temp |= ((ctx-> io_attr >> CU8(base + 2)) & (0xFFFFFFFF >> (32 -
drivers/hid/hid-apple.c +42 -4
64 lines not on this page · raw message
drivers/hid/hid-core.c +12 -0
@@ -1287,6 +1287,12 @@ static const struct hid_device_id hid_blacklist[] = { { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI) }, { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ISO) }, { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_ISO) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_JIS) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_ANSI) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_ISO) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS) }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI) }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO) }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS) },
@@ -1705,6 +1711,12 @@ static const struct hid_device_id hid_mouse_ignore_list[] = { { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI) }, { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ISO) }, { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_ISO) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_JIS) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_ANSI) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_ISO) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS) }, { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) }, { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) }, { }
drivers/hid/hid-ids.h +6 -0
@@ -88,6 +88,12 @@#define USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI 0x0236#define USB_DEVICE_ID_APPLE_WELLSPRING3_ISO 0x0237#define USB_DEVICE_ID_APPLE_WELLSPRING3_JIS 0x0238 +#define USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI 0x023f +#define USB_DEVICE_ID_APPLE_WELLSPRING4_ISO 0x0240 +#define USB_DEVICE_ID_APPLE_WELLSPRING4_JIS 0x0241 +#define USB_DEVICE_ID_APPLE_WELLSPRING4A_ANSI 0x0242 +#define USB_DEVICE_ID_APPLE_WELLSPRING4A_ISO 0x0243 +#define USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS 0x0244#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI 0x0239#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO 0x023a#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS 0x023b
drivers/hwmon/applesmc.c +66 -0
101 lines not on this page · raw message
drivers/input/mouse/elantech.c +94 -48
257 lines not on this page · raw message
drivers/input/mouse/elantech.h +4 -4
@@ -100,11 +100,11 @@ struct elantech_data {unsigned char reg_26;unsigned char debug;unsigned char capabilities; -unsigned char fw_version_maj; -unsigned char fw_version_min; +bool paritycheck; +bool jumpy_cursor;unsigned char hw_version; -unsigned char paritycheck; -unsigned char jumpy_cursor; +unsigned int fw_version; +unsigned int single_finger_reports;unsigned char parity[256 ]; };
drivers/input/mouse/synaptics.c +30 -5
@@ -135,7 +135,8 @@ static int synaptics_capability(struct psmouse *psmouse)if (synaptics_send_cmd (psmouse,SYN_QUE_CAPABILITIES , cap))return -1 ; priv->capabilities = (cap[0 ] <<16 ) | (cap[1 ] <<8 ) | cap[2 ]; - priv->ext_cap =0 ; + priv->ext_cap = priv->ext_cap_0c =0 ; +if (!SYN_CAP_VALID (priv->capabilities))return -1 ;
@@ -148,7 +149,7 @@ static int synaptics_capability(struct psmouse *psmouse)if (SYN_EXT_CAP_REQUESTS (priv->capabilities) >=1 ) {if (synaptics_send_cmd (psmouse,SYN_QUE_EXT_CAPAB , cap)) {printk (KERN_ERR "Synaptics claims to have extended capabilities," -" but I'm not able to read them." ); +" but I'm not able to read them.\n" ); }else { priv->ext_cap = (cap[0 ] <<16 ) | (cap[1 ] <<8 ) | cap[2 ];
@@ -160,6 +161,16 @@ static int synaptics_capability(struct psmouse *psmouse) priv->ext_cap &=0xff0fff ; } } + +if (SYN_EXT_CAP_REQUESTS (priv->capabilities) >=4 ) { +if (synaptics_send_cmd (psmouse,SYN_QUE_EXT_CAPAB_0C , cap)) { +printk (KERN_ERR "Synaptics claims to have extended capability 0x0c," +" but I'm not able to read it.\n" ); + }else { + priv->ext_cap_0c = (cap[0 ] <<16 ) | (cap[1 ] <<8 ) | cap[2 ]; + } + } +return 0 ; }
@@ -346,7 +357,15 @@ static void synaptics_parse_hw_state(unsigned char buf[], struct synaptics_data hw->left = (buf[0 ] &0x01 ) ?1 :0 ; hw->right = (buf[0 ] &0x02 ) ?1 :0 ; -if (SYN_CAP_MIDDLE_BUTTON (priv->capabilities)) { +if (SYN_CAP_CLICKPAD (priv->ext_cap_0c)) { +/* +* Clickpad's button is transmitted as middle button, +* however, since it is primary button, we will report +* it as BTN_LEFT. +*/ + hw->left = ((buf[0 ] ^ buf[3 ]) &0x01 ) ?1 :0 ; + + }else if (SYN_CAP_MIDDLE_BUTTON (priv->capabilities)) { hw->middle = ((buf[0 ] ^ buf[3 ]) &0x01 ) ?1 :0 ;if (hw->w ==2 ) hw->scroll = (signed char )(buf[1 ]);
@@ -591,6 +610,12 @@ static void set_input_params(struct input_dev *dev, struct synaptics_data *priv) dev->absres[ABS_X ] = priv->x_res; dev->absres[ABS_Y ] = priv->y_res; + +if (SYN_CAP_CLICKPAD (priv->ext_cap_0c)) { +/* Clickpads report only left button */ +__clear_bit (BTN_RIGHT , dev->keybit); +__clear_bit (BTN_MIDDLE , dev->keybit); + } }static void synaptics_disconnect (struct psmouse *psmouse)
@@ -689,10 +714,10 @@ int synaptics_init(struct psmouse *psmouse) priv->pkt_type =SYN_MODEL_NEWABS (priv->model_id) ?SYN_NEWABS :SYN_OLDABS ; -printk (KERN_INFO "Synaptics Touchpad, model: %ld, fw: %ld.%ld, id: %#lx, caps: %#lx/%#lx\n" , +printk (KERN_INFO "Synaptics Touchpad, model: %ld, fw: %ld.%ld, id: %#lx, caps: %#lx/%#lx/%#lx\n" ,SYN_ID_MODEL (priv->identity),SYN_ID_MAJOR (priv->identity),SYN_ID_MINOR (priv->identity), - priv->model_id, priv->capabilities, priv->ext_cap); + priv->model_id, priv->capabilities, priv->ext_cap, priv->ext_cap_0c);set_input_params (psmouse->dev, priv);
drivers/input/mouse/synaptics.h +4 -0
@@ -18,6 +18,7 @@#define SYN_QUE_SERIAL_NUMBER_SUFFIX 0x07#define SYN_QUE_RESOLUTION 0x08#define SYN_QUE_EXT_CAPAB 0x09 +#define SYN_QUE_EXT_CAPAB_0C 0x0c/* synatics modes */ #define SYN_BIT_ABSOLUTE_MODE (1 << 7)
@@ -48,6 +49,8 @@#define SYN_CAP_VALID (c) ((((c) & 0x00ff00) >> 8) == 0x47)#define SYN_EXT_CAP_REQUESTS (c) (((c) & 0x700000) >> 20)#define SYN_CAP_MULTI_BUTTON_NO (ec) (((ec) & 0x00f000) >> 12) +#define SYN_CAP_PRODUCT_ID (ec) (((ec) & 0xff0000) >> 16) +#define SYN_CAP_CLICKPAD (ex0c) ((ex0c) & 0x100100)/* synaptics modes query bits */ #define SYN_MODE_ABSOLUTE (m) ((m) & (1 << 7))
@@ -96,6 +99,7 @@ struct synaptics_data {unsigned long int model_id;/* Model-ID */ unsigned long int capabilities;/* Capabilities */ unsigned long int ext_cap;/* Extended Capabilities */ +unsigned long int ext_cap_0c;/* Ext Caps from 0x0c query */ unsigned long int identity;/* Identification */ int x_res;/* X resolution in units/mm */ int y_res;/* Y resolution in units/mm */
drivers/input/xen-kbdfront.c +11 -1
@@ -281,7 +281,7 @@ static void xenkbd_backend_changed(struct xenbus_device *dev, enum xenbus_state backend_state) {struct xenkbd_info *info =dev_get_drvdata (&dev->dev); -int val; +int ret, val;switch (backend_state) {case XenbusStateInitialising:
@@ -292,6 +292,16 @@ static void xenkbd_backend_changed(struct xenbus_device *dev,case XenbusStateInitWait: InitWait: + ret =xenbus_scanf (XBT_NIL , info->xbdev->otherend, +"feature-abs-pointer" ,"%d" , &val); +if (ret <0 ) + val =0 ; +if (val) { + ret =xenbus_printf (XBT_NIL , info->xbdev->nodename, +"request-abs-pointer" ,"1" ); +if (ret) +pr_warning ("can't request abs-pointer\n" ); + }xenbus_switch_state (dev, XenbusStateConnected);break ;
drivers/media/dvb/b2c2/flexcop-pci.c +1 -1
@@ -38,7 +38,7 @@ MODULE_PARM_DESC(debug, DEBSTATUS);#define DRIVER_VERSION "0.1" -#define DRIVER_NAME "Technisat/B2C2 FlexCop II/IIb/III Digital TV PCI Driver" +#define DRIVER_NAME "flexcop-pci"#define DRIVER_AUTHOR "Patrick Boettcher <[email protected]>"struct flexcop_pci {
drivers/media/dvb/dvb-usb/dib0700_devices.c +44 -2
70 lines not on this page · raw message
drivers/media/dvb/dvb-usb/dvb-usb-ids.h +1 -0
@@ -271,6 +271,7 @@#define USB_PID_TELESTAR_STARSTICK_2 0x8000#define USB_PID_MSI_DIGI_VOX_MINI_III 0x8807#define USB_PID_SONY_PLAYTV 0x0003 +#define USB_PID_ELGATO_EYETV_DIVERSITY 0x0011#define USB_PID_ELGATO_EYETV_DTT 0x0021#define USB_PID_ELGATO_EYETV_DTT_Dlx 0x0020#define USB_PID_DVB_T_USB_STICK_HIGH_SPEED_COLD 0x5000
drivers/mmc/core/core.c +56 -25
108 lines not on this page · raw message
drivers/mmc/core/host.c +6 -0
@@ -16,6 +16,7 @@#include <linux/idr.h> #include <linux/pagemap.h> #include <linux/leds.h> +#include <linux/suspend.h> #include <linux/mmc/host.h>
@@ -84,6 +85,9 @@ struct mmc_host *mmc_alloc_host(int extra, struct device *dev)init_waitqueue_head (&host->wq);INIT_DELAYED_WORK (&host->detect, mmc_rescan);INIT_DELAYED_WORK_DEFERRABLE (&host->disable, mmc_host_deeper_disable); +#ifdef CONFIG_PM + host->pm_notify.notifier_call = mmc_pm_notify; +#endif /* * By default, hosts do not support SGIO or large requests.
@@ -132,6 +136,7 @@ int mmc_add_host(struct mmc_host *host)#endif mmc_start_host (host); +register_pm_notifier (&host->pm_notify);return 0 ; }
@@ -148,6 +153,7 @@ EXPORT_SYMBOL(mmc_add_host);*/ void mmc_remove_host (struct mmc_host *host) { +unregister_pm_notifier (&host->pm_notify);mmc_stop_host (host);#ifdef CONFIG_DEBUG_FS
drivers/mmc/host/sdhci-pci.c +1 -0
@@ -569,6 +569,7 @@ static struct sdhci_pci_slot * __devinit sdhci_pci_probe_slot( host->ioaddr =pci_ioremap_bar (pdev, bar);if (!host->ioaddr) {dev_err (&pdev->dev,"failed to remap registers\n" ); + ret = -ENOMEM ; goto release; }
drivers/mmc/host/sdhci.c +8 -1
@@ -1266,6 +1266,13 @@ static void sdhci_tasklet_finish(unsigned long param) host = (struct sdhci_host *)param; +/* +* If this tasklet gets rescheduled while running, it will +* be run again afterwards but without any active request. +*/ +if (!host->mrq) +return ; +spin_lock_irqsave (&host->lock, flags);del_timer (&host->timer);
@@ -1277,7 +1284,7 @@ static void sdhci_tasklet_finish(unsigned long param)* upon error conditions. */ if (!(host->flags &SDHCI_DEVICE_DEAD ) && - (mrq->cmd->error || + ((mrq->cmd && mrq->cmd->error) || (mrq->data && (mrq->data->error || (mrq->data->stop && mrq->data->stop->error))) || (host->quirks &SDHCI_QUIRK_RESET_AFTER_REQUEST ))) {
drivers/net/atl1c/atl1c_main.c +0 -2
@@ -1976,8 +1976,6 @@ static void atl1c_tx_map(struct atl1c_adapter *adapter,else { use_tpd =atl1c_get_tpd (adapter, type);memcpy (use_tpd, tpd,sizeof (struct atl1c_tpd_desc )); - use_tpd =atl1c_get_tpd (adapter, type); -memcpy (use_tpd, tpd,sizeof (struct atl1c_tpd_desc )); } buffer_info =atl1c_get_tx_buffer (adapter, use_tpd); buffer_info->length = buf_len - mapped_len;
drivers/net/bnx2x_main.c +14 -13
@@ -49,6 +49,7 @@#include <linux/prefetch.h> #include <linux/zlib.h> #include <linux/io.h> +#include <linux/stringify.h> #include "bnx2x.h"
@@ -63,8 +64,13 @@#include <linux/firmware.h> #include "bnx2x_fw_file_hdr.h" /* FW files */ -#define FW_FILE_PREFIX_E1 "bnx2x-e1-" -#define FW_FILE_PREFIX_E1H "bnx2x-e1h-" +#define FW_FILE_VERSION \ + __stringify(BCM_5710_FW_MAJOR_VERSION) "." \ + __stringify(BCM_5710_FW_MINOR_VERSION) "." \ + __stringify(BCM_5710_FW_REVISION_VERSION) "." \ + __stringify(BCM_5710_FW_ENGINEERING_VERSION) +#define FW_FILE_NAME_E1 "bnx2x-e1-" FW_FILE_VERSION ".fw" +#define FW_FILE_NAME_E1H "bnx2x-e1h-" FW_FILE_VERSION ".fw"/* Time in jiffies before concluding the transmitter is hung */ #define TX_TIMEOUT (5*HZ)
@@ -77,6 +83,8 @@ MODULE_AUTHOR("Eliezer Tamir");MODULE_DESCRIPTION ("Broadcom NetXtreme II BCM57710/57711/57711E Driver" );MODULE_LICENSE ("GPL" );MODULE_VERSION (DRV_MODULE_VERSION ); +MODULE_FIRMWARE (FW_FILE_NAME_E1 ); +MODULE_FIRMWARE (FW_FILE_NAME_E1H );static int multi_mode =1 ;module_param (multi_mode, int,0 );
@@ -11830,21 +11838,14 @@ static inline void be16_to_cpu_n(const u8 *_source, u8 *_target, u32 n)static int __devinit bnx2x_init_firmware (struct bnx2x *bp,struct device *dev) { -char fw_file_name[40 ] = {0 }; +const char *fw_file_name;struct bnx2x_fw_file_hdr *fw_hdr; -int rc, offset; +int rc; -/* Create a FW file name */ if (CHIP_IS_E1 (bp)) - offset =sprintf (fw_file_name,FW_FILE_PREFIX_E1 ); + fw_file_name =FW_FILE_NAME_E1 ;else - offset =sprintf (fw_file_name,FW_FILE_PREFIX_E1H ); - -sprintf (fw_file_name + offset,"%d.%d.%d.%d.fw" , -BCM_5710_FW_MAJOR_VERSION , -BCM_5710_FW_MINOR_VERSION , -BCM_5710_FW_REVISION_VERSION , -BCM_5710_FW_ENGINEERING_VERSION ); + fw_file_name =FW_FILE_NAME_E1H ; printk(KERN_INFO PFX "Loading %s\n", fw_file_name);
drivers/net/bonding/bond_3ad.c +4 -0
@@ -2451,6 +2451,10 @@ int bond_3ad_lacpdu_recv(struct sk_buff *skb, struct net_device *dev, struct pacif (!(dev->flags &IFF_MASTER )) goto out; + skb =skb_share_check (skb,GFP_ATOMIC ); +if (!skb) + goto out; +if (!pskb_may_pull (skb,sizeof (struct lacpdu ))) goto out;
drivers/net/bonding/bond_alb.c +4 -0
@@ -370,6 +370,10 @@ static int rlb_arp_recv(struct sk_buff *skb, struct net_device *bond_dev, struct goto out; } + skb =skb_share_check (skb,GFP_ATOMIC ); +if (!skb) + goto out; +if (!pskb_may_pull (skb,arp_hdr_len (bond_dev))) goto out;
drivers/net/bonding/bond_main.c +4 -0
@@ -2692,6 +2692,10 @@ static int bond_arp_rcv(struct sk_buff *skb, struct net_device *dev, struct packif (!slave || !slave_do_arp_validate (bond, slave)) goto out_unlock; + skb =skb_share_check (skb,GFP_ATOMIC ); +if (!skb) + goto out_unlock; +if (!pskb_may_pull (skb,arp_hdr_len (dev))) goto out_unlock;
drivers/net/cxgb3/common.h +3 -5
@@ -125,11 +125,9 @@ enum { /* adapter interrupt-maintained statistics */ IRQ_NUM_STATS /* keep last */ }; -enum { -TP_VERSION_MAJOR =1 , -TP_VERSION_MINOR =1 , -TP_VERSION_MICRO =0 -}; +#define TP_VERSION_MAJOR 1 +#define TP_VERSION_MINOR 1 +#define TP_VERSION_MICRO 0#define S_TP_VERSION_MAJOR 16#define M_TP_VERSION_MAJOR 0xFF
drivers/net/cxgb3/cxgb3_main.c +16 -9
@@ -44,6 +44,7 @@#include <linux/rtnetlink.h> #include <linux/firmware.h> #include <linux/log2.h> +#include <linux/stringify.h> #include <asm/uaccess.h> #include "common.h"
@@ -989,11 +990,21 @@ static int bind_qsets(struct adapter *adap)return err; } -#define FW_FNAME "cxgb3/t3fw-%d.%d.%d.bin" -#define TPSRAM_NAME "cxgb3/t3%c_psram-%d.%d.%d.bin" +#define FW_VERSION __stringify(FW_VERSION_MAJOR) "." \ + __stringify(FW_VERSION_MINOR) "." __stringify(FW_VERSION_MICRO) +#define FW_FNAME "cxgb3/t3fw-" FW_VERSION ".bin" +#define TPSRAM_VERSION __stringify(TP_VERSION_MAJOR) "." \ + __stringify(TP_VERSION_MINOR) "." __stringify(TP_VERSION_MICRO) +#define TPSRAM_NAME "cxgb3/t3%c_psram-" TPSRAM_VERSION ".bin"#define AEL2005_OPT_EDC_NAME "cxgb3/ael2005_opt_edc.bin"#define AEL2005_TWX_EDC_NAME "cxgb3/ael2005_twx_edc.bin"#define AEL2020_TWX_EDC_NAME "cxgb3/ael2020_twx_edc.bin" +MODULE_FIRMWARE (FW_FNAME ); +MODULE_FIRMWARE ("cxgb3/t3b_psram-" TPSRAM_VERSION ".bin" ); +MODULE_FIRMWARE ("cxgb3/t3c_psram-" TPSRAM_VERSION ".bin" ); +MODULE_FIRMWARE (AEL2005_OPT_EDC_NAME ); +MODULE_FIRMWARE (AEL2005_TWX_EDC_NAME ); +MODULE_FIRMWARE (AEL2020_TWX_EDC_NAME );static inline const char *get_edc_fw_name (int edc_idx) {
@@ -1064,16 +1075,13 @@ int t3_get_edc_fw(struct cphy *phy, int edc_idx, int size)static int upgrade_fw (struct adapter *adap) {int ret; -char buf[64 ];const struct firmware *fw;struct device *dev = &adap->pdev->dev; -snprintf (buf,sizeof (buf),FW_FNAME ,FW_VERSION_MAJOR , -FW_VERSION_MINOR ,FW_VERSION_MICRO ); - ret =request_firmware (&fw, buf, dev); + ret =request_firmware (&fw,FW_FNAME , dev);if (ret <0 ) {dev_err (dev,"could not upgrade firmware: unable to load %s\n" , - buf); +FW_FNAME );return ret; } ret =t3_load_fw (adap, fw->data, fw->size);
@@ -1117,8 +1125,7 @@ static int update_tpsram(struct adapter *adap)if (!rev)return 0 ; -snprintf (buf,sizeof (buf),TPSRAM_NAME , rev, -TP_VERSION_MAJOR ,TP_VERSION_MINOR ,TP_VERSION_MICRO ); +snprintf (buf,sizeof (buf),TPSRAM_NAME , rev); ret =request_firmware (&tpsram, buf, dev);if (ret <0 ) {
drivers/net/e1000/e1000_main.c +92 -70
209 lines not on this page · raw message
drivers/net/e1000e/ich8lan.c +11 -0
@@ -274,6 +274,16 @@ static s32 e1000_init_phy_params_pchlan(struct e1000_hw *hw) phy->ops.write_phy_reg_locked = e1000_write_phy_reg_hv_locked; phy->autoneg_mask =AUTONEG_ADVERTISE_SPEED_DEFAULT ; +/* +* Reset the PHY before any acccess to it. Doing so, ensures that +* the PHY is in a known good state before we read/write PHY registers. +* The generic reset is sufficient here, because we haven't determined +* the PHY type yet. +*/ + ret_val =e1000e_phy_hw_reset_generic (hw); +if (ret_val) + goto out; + phy->id = e1000_phy_unknown;e1000e_get_phy_id (hw); phy->type =e1000e_get_phy_type_from_id (phy->id);
@@ -287,6 +297,7 @@ static s32 e1000_init_phy_params_pchlan(struct e1000_hw *hw) phy->ops.commit_phy = e1000e_phy_sw_reset; } + out:return ret_val; }
drivers/net/igbvf/igbvf.h +0 -1
@@ -125,7 +125,6 @@ struct igbvf_buffer {unsigned int page_offset; }; }; -struct page *page; };union igbvf_desc {
drivers/net/ipg.c +1 -3
@@ -88,7 +88,6 @@ static const char *ipg_brand_name[] = {"Sundance Technology ST2021 based NIC" ,"Tamarack Microelectronics TC9020/9021 based NIC" ,"Tamarack Microelectronics TC9020/9021 based NIC" , -"D-Link NIC" , "D-Link NIC IP1000A" };
@@ -97,8 +96,7 @@ static struct pci_device_id ipg_pci_tbl[] __devinitdata = { { PCI_VDEVICE(SUNDANCE, 0x2021), 1 }, { PCI_VDEVICE(SUNDANCE, 0x1021), 2 }, { PCI_VDEVICE(DLINK, 0x9021), 3 }, - { PCI_VDEVICE(DLINK, 0x4000), 4 }, - { PCI_VDEVICE(DLINK, 0x4020), 5 }, + { PCI_VDEVICE(DLINK, 0x4020), 4 }, { 0, } };
drivers/net/myri10ge/myri10ge.c +4 -0
@@ -264,6 +264,10 @@ static char *myri10ge_fw_unaligned = "myri10ge_ethp_z8e.dat";static char *myri10ge_fw_aligned ="myri10ge_eth_z8e.dat" ;static char *myri10ge_fw_rss_unaligned ="myri10ge_rss_ethp_z8e.dat" ;static char *myri10ge_fw_rss_aligned ="myri10ge_rss_eth_z8e.dat" ; +MODULE_FIRMWARE ("myri10ge_ethp_z8e.dat" ); +MODULE_FIRMWARE ("myri10ge_eth_z8e.dat" ); +MODULE_FIRMWARE ("myri10ge_rss_ethp_z8e.dat" ); +MODULE_FIRMWARE ("myri10ge_rss_eth_z8e.dat" );static char *myri10ge_fw_name =NULL ;module_param (myri10ge_fw_name, charp,S_IRUGO |S_IWUSR );
drivers/net/netx-eth.c +3 -0
@@ -510,3 +510,6 @@ module_exit(netx_eth_cleanup);MODULE_AUTHOR ("Sascha Hauer, Pengutronix" );MODULE_LICENSE ("GPL" );MODULE_ALIAS ("platform:" CARDNAME ); +MODULE_FIRMWARE ("xc0.bin" ); +MODULE_FIRMWARE ("xc1.bin" ); +MODULE_FIRMWARE ("xc2.bin" );
drivers/net/netxen/netxen_nic.h +6 -0
@@ -487,6 +487,12 @@ struct status_desc {#define NX_P3_MN_ROMIMAGE 2#define NX_FLASH_ROMIMAGE 3 +#define NX_P2_MN_ROMIMAGE_NAME "nxromimg.bin" +#define NX_P3_CT_ROMIMAGE_NAME "nx3fwct.bin" +#define NX_P3_MN_ROMIMAGE_NAME "nx3fwmn.bin" +#define NX_UNIFIED_ROMIMAGE_NAME "phanfw.bin" +#define NX_FLASH_ROMIMAGE_NAME "flash" +extern char netxen_nic_driver_name[];/* Number of status descriptors to handle per interrupt */
drivers/net/netxen/netxen_nic_init.c +5 -1
@@ -673,7 +673,11 @@ netxen_need_fw_reset(struct netxen_adapter *adapter) }static char *fw_name[] = { -"nxromimg.bin" ,"nx3fwct.bin" ,"nx3fwmn.bin" ,"flash" , +NX_P2_MN_ROMIMAGE_NAME , +NX_P3_CT_ROMIMAGE_NAME , +NX_P3_MN_ROMIMAGE_NAME , +NX_UNIFIED_ROMIMAGE_NAME , +NX_FLASH_ROMIMAGE_NAME , };int
drivers/net/netxen/netxen_nic_main.c +4 -0
@@ -38,6 +38,10 @@MODULE_DESCRIPTION ("NetXen Multi port (1/10) Gigabit Network Driver" );MODULE_LICENSE ("GPL" );MODULE_VERSION (NETXEN_NIC_LINUX_VERSIONID ); +MODULE_FIRMWARE (NX_P2_MN_ROMIMAGE_NAME ); +MODULE_FIRMWARE (NX_P3_CT_ROMIMAGE_NAME ); +MODULE_FIRMWARE (NX_P3_MN_ROMIMAGE_NAME ); +MODULE_FIRMWARE (NX_UNIFIED_ROMIMAGE_NAME );char netxen_nic_driver_name[] ="netxen_nic" ;static char netxen_nic_driver_string[] ="NetXen Network Driver version "
drivers/net/niu.c +6 -11
@@ -7315,33 +7315,28 @@ static int niu_get_ethtool_tcam_all(struct niu *np,struct niu_parent *parent = np->parent;struct niu_tcam_entry *tp;int i, idx, cnt; -u16 n_entries;unsigned long flags; - +int ret =0 ;/* put the tcam size here */ nfc->data =tcam_get_size (np);niu_lock_parent (np, flags); - n_entries = nfc->rule_cnt;for (cnt =0 , i =0 ; i < nfc->data; i++) { idx =tcam_get_index (np, i); tp = &parent->tcam[idx];if (!tp->valid)continue ; +if (cnt == nfc->rule_cnt) { + ret = -EMSGSIZE ; +break ; + } rule_locs[cnt] = i; cnt++; }niu_unlock_parent (np, flags); -if (n_entries != cnt) { -/* print warning, this should not happen */ -pr_info (PFX "niu%d: %s In niu_get_ethtool_tcam_all, " -"n_entries[%d] != cnt[%d]!!!\n\n" , - np->parent->index, np->dev->name, n_entries, cnt); - } - -return 0 ; +return ret; } static int niu_get_nfc(struct net_device *dev, struct ethtool_rxnfc *cmd,
drivers/net/pcmcia/pcnet_cs.c +7 -0
@@ -1768,6 +1768,13 @@ static struct pcmcia_device_id pcnet_ids[] = {PCMCIA_DEVICE_NULL };MODULE_DEVICE_TABLE (pcmcia, pcnet_ids); +MODULE_FIRMWARE ("cis/PCMLM28.cis" ); +MODULE_FIRMWARE ("cis/DP83903.cis" ); +MODULE_FIRMWARE ("cis/LA-PCM.cis" ); +MODULE_FIRMWARE ("PE520.cis" ); +MODULE_FIRMWARE ("cis/NE2K.cis" ); +MODULE_FIRMWARE ("cis/PE-200.cis" ); +MODULE_FIRMWARE ("cis/tamarack.cis" );static struct pcmcia_driver pcnet_driver = { .drv = {
drivers/net/pppol2tp.c +3 -0
@@ -756,6 +756,7 @@ static int pppol2tp_recv_core(struct sock *sock, struct sk_buff *skb)/* Try to dequeue as many skbs from reorder_q as we can. */ pppol2tp_recv_dequeue (session); +sock_put (sock);return 0 ;
@@ -772,6 +773,7 @@ discard_bad_csum:UDP_INC_STATS_USER (&init_net,UDP_MIB_INERRORS ,0 ); tunnel->stats.rx_errors++;kfree_skb (skb); +sock_put (sock);return 0 ;
@@ -1658,6 +1660,7 @@ static int pppol2tp_connect(struct socket *sock, struct sockaddr *uservaddr,if (tunnel_sock ==NULL ) goto end; +sock_hold (tunnel_sock); tunnel = tunnel_sock->sk_user_data; }else { tunnel =pppol2tp_tunnel_find (sock_net (sk), sp->pppol2tp.s_tunnel);
drivers/net/spider_net.c +1 -0
@@ -57,6 +57,7 @@ MODULE_AUTHOR("Utz Bacher <[email protected]> and Jens Osterkamp " \MODULE_DESCRIPTION ("Spider Southbridge Gigabit Ethernet driver" );MODULE_LICENSE ("GPL" );MODULE_VERSION (VERSION ); +MODULE_FIRMWARE (SPIDER_NET_FIRMWARE_NAME );static int rx_descriptors =SPIDER_NET_RX_DESCRIPTORS_DEFAULT ;static int tx_descriptors =SPIDER_NET_TX_DESCRIPTORS_DEFAULT ;
drivers/net/tehuti.c +2 -2
@@ -324,7 +324,7 @@ static int bdx_fw_load(struct bdx_priv *priv)ENTER ; master =READ_REG (priv, regINIT_SEMAPHORE);if (!READ_REG (priv, regINIT_STATUS) && master) { - rc =request_firmware (&fw,"tehuti/firmware.bin" , &priv->pdev->dev); + rc =request_firmware (&fw,"tehuti/bdx.bin" , &priv->pdev->dev);if (rc) goto out;bdx_tx_push_desc_safe (priv, (char *)fw->data, fw->size);
@@ -2524,4 +2524,4 @@ module_exit(bdx_module_exit);MODULE_LICENSE ("GPL" );MODULE_AUTHOR (DRIVER_AUTHOR );MODULE_DESCRIPTION (BDX_DRV_DESC ); -MODULE_FIRMWARE ("tehuti/firmware.bin" ); +MODULE_FIRMWARE ("tehuti/bdx.bin" );
drivers/net/tokenring/tms380tr.c +2 -0
@@ -1364,6 +1364,8 @@ static int tms380tr_reset_adapter(struct net_device *dev)return (-1 ); } +MODULE_FIRMWARE ("tms380tr.bin" ); +/* * Starts bring up diagnostics of token ring adapter and evaluates * diagnostic results.
drivers/net/tulip/tulip_core.c +1 -0
@@ -249,6 +249,7 @@ static struct pci_device_id tulip_pci_tbl[] = { { 0x17B3, 0xAB08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, { 0x10b7, 0x9300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, /* 3Com 3CSOHO100B-TX */ { 0x14ea, 0xab08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, /* Planex FNW-3602-TX */ + { 0x1414, 0x0001, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, /* Microsoft MN-120 */ { 0x1414, 0x0002, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, { } /* terminate list */ };
drivers/net/virtio_net.c +29 -19
79 lines not on this page · raw message
drivers/net/wireless/ath/regd_common.h +1 -0
@@ -195,6 +195,7 @@ static struct reg_dmn_pair_mapping regDomainPairs[] = { {APL9_WORLD, CTL_ETSI, CTL_ETSI}, {APL3_FCCA, CTL_FCC, CTL_FCC}, + {APL7_FCCA, CTL_FCC, CTL_FCC}, {APL1_ETSIC, CTL_FCC, CTL_ETSI}, {APL2_ETSIC, CTL_FCC, CTL_ETSI}, {APL2_APLD, CTL_FCC, NO_CTL},
drivers/net/wireless/b43/sdio.c +3 -0
@@ -162,6 +162,7 @@ static int b43_sdio_probe(struct sdio_func *func, err_free_ssb:kfree (sdio); err_disable_func: +sdio_claim_host (func);sdio_disable_func (func); err_release_host:sdio_release_host (func);
@@ -174,7 +175,9 @@ static void b43_sdio_remove(struct sdio_func *func)struct b43_sdio *sdio =sdio_get_drvdata (func);ssb_bus_unregister (&sdio->ssb); +sdio_claim_host (func);sdio_disable_func (func); +sdio_release_host (func);kfree (sdio);sdio_set_drvdata (func,NULL ); }
drivers/net/wireless/iwlwifi/iwl-5000.c +1 -1
@@ -47,7 +47,7 @@#include "iwl-6000-hw.h" /* Highest firmware API version supported */ -#define IWL5000_UCODE_API_MAX 2 +#define IWL5000_UCODE_API_MAX 5#define IWL5150_UCODE_API_MAX 2/* Lowest firmware API version supported */
drivers/net/wireless/iwlwifi/iwl-tx.c +6 -2
@@ -1088,11 +1088,15 @@ int iwl_tx_queue_reclaim(struct iwl_priv *priv, int txq_id, int index) q->read_ptr = iwl_queue_inc_wrap(q->read_ptr, q->n_bd)) { tx_info = &txq->txb[txq->q.read_ptr]; -ieee80211_tx_status_irqsafe (priv->hw, tx_info->skb[0 ]); + +if (WARN_ON_ONCE (tx_info->skb ==NULL )) +continue ; hdr = (struct ieee80211_hdr *)tx_info->skb[0 ]->data; -if (hdr &&ieee80211_is_data_qos (hdr->frame_control)) +if (ieee80211_is_data_qos (hdr->frame_control)) nfreed++; + +ieee80211_tx_status_irqsafe (priv->hw, tx_info->skb[0 ]); tx_info->skb[0 ] =NULL ;if (priv->cfg->ops->lib->txq_inval_byte_cnt_tbl)
drivers/net/wireless/p54/txrx.c +1 -1
@@ -703,7 +703,7 @@ int p54_tx_80211(struct ieee80211_hw *dev, struct sk_buff *skb)struct p54_tx_info *p54info;struct p54_hdr *hdr;struct p54_tx_data *txhdr; -unsigned int padding, len, extra_len; +unsigned int padding, len, extra_len =0 ;int i, j, ridx;u16 hdr_flags =0 , aid =0 ;u8 rate, queue =0 , crypt_offset =0 ;
drivers/net/wireless/rt2x00/rt2400pci.c +1 -1
@@ -1431,7 +1431,6 @@ static int rt2400pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev)IEEE80211_HW_SIGNAL_DBM |IEEE80211_HW_SUPPORTS_PS |IEEE80211_HW_PS_NULLFUNC_STACK ; - rt2x00dev->hw->extra_tx_headroom =0 ;SET_IEEE80211_DEV (rt2x00dev->hw, rt2x00dev->dev); SET_IEEE80211_PERM_ADDR(rt2x00dev->hw,
@@ -1628,6 +1627,7 @@ static const struct rt2x00_ops rt2400pci_ops = { .eeprom_size = EEPROM_SIZE, .rf_size = RF_SIZE, .tx_queues = NUM_TX_QUEUES, + .extra_tx_headroom = 0, .rx = &rt2400pci_queue_rx, .tx = &rt2400pci_queue_tx, .bcn = &rt2400pci_queue_bcn,
drivers/net/wireless/rt2x00/rt2500pci.c +1 -2
@@ -1732,8 +1732,6 @@ static int rt2500pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev)IEEE80211_HW_SUPPORTS_PS |IEEE80211_HW_PS_NULLFUNC_STACK ; - rt2x00dev->hw->extra_tx_headroom =0 ; -SET_IEEE80211_DEV (rt2x00dev->hw, rt2x00dev->dev); SET_IEEE80211_PERM_ADDR(rt2x00dev->hw, rt2x00_eeprom_addr(rt2x00dev,
@@ -1927,6 +1925,7 @@ static const struct rt2x00_ops rt2500pci_ops = { .eeprom_size = EEPROM_SIZE, .rf_size = RF_SIZE, .tx_queues = NUM_TX_QUEUES, + .extra_tx_headroom = 0, .rx = &rt2500pci_queue_rx, .tx = &rt2500pci_queue_tx, .bcn = &rt2500pci_queue_bcn,
drivers/net/wireless/rt2x00/rt2500usb.c +11 -2
@@ -347,6 +347,7 @@ static int rt2500usb_config_key(struct rt2x00_dev *rt2x00dev,int timeout;u32 mask;u16 reg; +enum cipher curr_cipher;if (crypto->cmd ==SET_KEY ) {/*
@@ -357,6 +358,7 @@ static int rt2500usb_config_key(struct rt2x00_dev *rt2x00dev, mask =TXRX_CSR0_KEY_ID .bit_mask;rt2500usb_register_read (rt2x00dev,TXRX_CSR0 , ®); + curr_cipher =rt2x00_get_field16 (reg,TXRX_CSR0_ALGORITHM ); reg &= mask;if (reg && reg == mask)
@@ -365,6 +367,14 @@ static int rt2500usb_config_key(struct rt2x00_dev *rt2x00dev, reg =rt2x00_get_field16 (reg,TXRX_CSR0_KEY_ID ); key->hw_key_idx += reg ?ffz (reg) :0 ; +/* +* Hardware requires that all keys use the same cipher +* (e.g. TKIP-only, AES-only, but not TKIP+AES). +* If this is not the first key, compare the cipher with the +* first one and fall back to SW crypto if not the same. +*/ +if (key->hw_key_idx >0 && crypto->cipher != curr_cipher) +return -EOPNOTSUPP ;/* * The encryption key doesn't fit within the CSR cache,
@@ -1788,8 +1798,6 @@ static int rt2500usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev)IEEE80211_HW_SUPPORTS_PS |IEEE80211_HW_PS_NULLFUNC_STACK ; - rt2x00dev->hw->extra_tx_headroom =TXD_DESC_SIZE ; -SET_IEEE80211_DEV (rt2x00dev->hw, rt2x00dev->dev); SET_IEEE80211_PERM_ADDR(rt2x00dev->hw, rt2x00_eeprom_addr(rt2x00dev,
@@ -1962,6 +1970,7 @@ static const struct rt2x00_ops rt2500usb_ops = { .eeprom_size = EEPROM_SIZE, .rf_size = RF_SIZE, .tx_queues = NUM_TX_QUEUES, + .extra_tx_headroom = TXD_DESC_SIZE, .rx = &rt2500usb_queue_rx, .tx = &rt2500usb_queue_tx, .bcn = &rt2500usb_queue_bcn,
drivers/net/wireless/rt2x00/rt2800usb.c +1 -1
@@ -2509,7 +2509,6 @@ static int rt2800usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev)IEEE80211_HW_SIGNAL_DBM |IEEE80211_HW_SUPPORTS_PS |IEEE80211_HW_PS_NULLFUNC_STACK ; - rt2x00dev->hw->extra_tx_headroom =TXINFO_DESC_SIZE +TXWI_DESC_SIZE ;SET_IEEE80211_DEV (rt2x00dev->hw, rt2x00dev->dev); SET_IEEE80211_PERM_ADDR(rt2x00dev->hw,
@@ -2858,6 +2857,7 @@ static const struct rt2x00_ops rt2800usb_ops = { .eeprom_size = EEPROM_SIZE, .rf_size = RF_SIZE, .tx_queues = NUM_TX_QUEUES, + .extra_tx_headroom = TXINFO_DESC_SIZE + TXWI_DESC_SIZE, .rx = &rt2800usb_queue_rx, .tx = &rt2800usb_queue_tx, .bcn = &rt2800usb_queue_bcn,
drivers/net/wireless/rt2x00/rt2x00.h +7 -0
@@ -112,6 +112,12 @@ ( ((unsigned long )((__skb)->data + (__header))) &3 )/* +* Constants for extra TX headroom for alignment purposes. + */ +#define RT2X00_ALIGN_SIZE 4/* Only whole frame needs alignment */ +#define RT2X00_L2PAD_SIZE 8/* Both header & payload need alignment */ + +/* * Standard timing and size defines. * These values should follow the ieee80211 specifications. */
@@ -579,6 +585,7 @@ struct rt2x00_ops {const unsigned int eeprom_size;const unsigned int rf_size;const unsigned int tx_queues; +const unsigned int extra_tx_headroom;const struct data_queue_desc *rx;const struct data_queue_desc *tx;const struct data_queue_desc *bcn;
drivers/net/wireless/rt2x00/rt2x00dev.c +15 -0
@@ -684,6 +684,21 @@ static int rt2x00lib_probe_hw(struct rt2x00_dev *rt2x00dev) rt2x00dev->hw->queues = rt2x00dev->ops->tx_queues;/* +* Initialize extra TX headroom required. +*/ + rt2x00dev->hw->extra_tx_headroom = + max_t(unsigned int, IEEE80211_TX_STATUS_HEADROOM, + rt2x00dev->ops->extra_tx_headroom); + +/* +* Take TX headroom required for alignment into account. +*/ +if (test_bit (DRIVER_REQUIRE_L2PAD , &rt2x00dev->flags)) + rt2x00dev->hw->extra_tx_headroom +=RT2X00_L2PAD_SIZE ; +else if (test_bit (DRIVER_REQUIRE_DMA , &rt2x00dev->flags)) + rt2x00dev->hw->extra_tx_headroom +=RT2X00_ALIGN_SIZE ; + +/* * Register HW. */ status =ieee80211_register_hw (rt2x00dev->hw);
drivers/net/wireless/rt2x00/rt2x00queue.c +3 -3
@@ -103,7 +103,7 @@ void rt2x00queue_map_txskb(struct rt2x00_dev *rt2x00dev, struct sk_buff *skb)* is also mapped to the DMA so it can be used for transfering * additional descriptor information to the hardware. */ -skb_push (skb, rt2x00dev->hw->extra_tx_headroom); +skb_push (skb, rt2x00dev->ops->extra_tx_headroom); skbdesc->skb_dma =dma_map_single (rt2x00dev->dev, skb->data, skb->len,DMA_TO_DEVICE );
@@ -111,7 +111,7 @@ void rt2x00queue_map_txskb(struct rt2x00_dev *rt2x00dev, struct sk_buff *skb)/* * Restore data pointer to original location again. */ -skb_pull (skb, rt2x00dev->hw->extra_tx_headroom); +skb_pull (skb, rt2x00dev->ops->extra_tx_headroom); skbdesc->flags |=SKBDESC_DMA_MAPPED_TX ; }
@@ -133,7 +133,7 @@ void rt2x00queue_unmap_skb(struct rt2x00_dev *rt2x00dev, struct sk_buff *skb)* by the driver, but it was actually mapped to DMA. */ dma_unmap_single (rt2x00dev->dev, skbdesc->skb_dma, - skb->len + rt2x00dev->hw->extra_tx_headroom, + skb->len + rt2x00dev->ops->extra_tx_headroom,DMA_TO_DEVICE ); skbdesc->flags &= ~SKBDESC_DMA_MAPPED_TX ; }
drivers/net/wireless/rt2x00/rt61pci.c +1 -1
@@ -2550,7 +2550,6 @@ static int rt61pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev)IEEE80211_HW_SIGNAL_DBM |IEEE80211_HW_SUPPORTS_PS |IEEE80211_HW_PS_NULLFUNC_STACK ; - rt2x00dev->hw->extra_tx_headroom =0 ;SET_IEEE80211_DEV (rt2x00dev->hw, rt2x00dev->dev); SET_IEEE80211_PERM_ADDR(rt2x00dev->hw,
@@ -2798,6 +2797,7 @@ static const struct rt2x00_ops rt61pci_ops = { .eeprom_size = EEPROM_SIZE, .rf_size = RF_SIZE, .tx_queues = NUM_TX_QUEUES, + .extra_tx_headroom = 0, .rx = &rt61pci_queue_rx, .tx = &rt61pci_queue_tx, .bcn = &rt61pci_queue_bcn,
drivers/net/wireless/rt2x00/rt73usb.c +1 -1
@@ -2068,7 +2068,6 @@ static int rt73usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev)IEEE80211_HW_SIGNAL_DBM |IEEE80211_HW_SUPPORTS_PS |IEEE80211_HW_PS_NULLFUNC_STACK ; - rt2x00dev->hw->extra_tx_headroom =TXD_DESC_SIZE ;SET_IEEE80211_DEV (rt2x00dev->hw, rt2x00dev->dev); SET_IEEE80211_PERM_ADDR(rt2x00dev->hw,
@@ -2311,6 +2310,7 @@ static const struct rt2x00_ops rt73usb_ops = { .eeprom_size = EEPROM_SIZE, .rf_size = RF_SIZE, .tx_queues = NUM_TX_QUEUES, + .extra_tx_headroom = TXD_DESC_SIZE, .rx = &rt73usb_queue_rx, .tx = &rt73usb_queue_tx, .bcn = &rt73usb_queue_bcn,
drivers/pci/intel-iommu.c +20 -3
@@ -382,7 +382,7 @@ int dmar_disabled = 0;int dmar_disabled =1 ;#endif /*CONFIG_DMAR_DEFAULT_ON*/ -static int __initdata dmar_map_gfx =1 ; +static int dmar_map_gfx =1 ;static int dmar_forcedac;static int intel_iommu_strict;
@@ -1858,7 +1858,7 @@ static struct dmar_domain *get_domain_for_dev(struct pci_dev *pdev, int gaw) ret =iommu_attach_domain (domain, iommu);if (ret) { -domain_exit (domain); +free_domain_mem (domain); goto error; }
@@ -3244,9 +3244,15 @@ static int device_notifier(struct notifier_block *nb,if (!domain)return 0 ; -if (action ==BUS_NOTIFY_UNBOUND_DRIVER && !iommu_pass_through) +if (action ==BUS_NOTIFY_UNBOUND_DRIVER && !iommu_pass_through) {domain_remove_one_dev_info (domain, pdev); +if (!(domain->flags &DOMAIN_FLAG_VIRTUAL_MACHINE ) && + !(domain->flags &DOMAIN_FLAG_STATIC_IDENTITY ) && +list_empty (&domain->devices)) +domain_exit (domain); + } +return 0 ; }
@@ -3393,6 +3399,11 @@ static void domain_remove_one_dev_info(struct dmar_domain *domain, domain->iommu_count--;domain_update_iommu_cap (domain);spin_unlock_irqrestore (&domain->iommu_lock, tmp_flags); + +spin_lock_irqsave (&iommu->lock, tmp_flags); +clear_bit (domain->id, iommu->domain_ids); + iommu->domains[domain->id] =NULL ; +spin_unlock_irqrestore (&iommu->lock, tmp_flags); }spin_unlock_irqrestore (&device_domain_lock, flags);
@@ -3730,6 +3741,12 @@ static void __devinit quirk_iommu_rwbf(struct pci_dev *dev)*/ printk (KERN_INFO "DMAR: Forcing write-buffer flush capability\n" ); rwbf_quirk =1 ; + +/* https://bugzilla.redhat.com/show_bug.cgi?id=538163 */ +if (dev->revision ==0x07 ) { +printk (KERN_INFO "DMAR: Disabling IOMMU for graphics on this chipset\n" ); + dmar_map_gfx =0 ; + } }DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_INTEL ,0x2a40 , quirk_iommu_rwbf);
drivers/platform/x86/dell-laptop.c +15 -0
@@ -71,6 +71,19 @@ static const struct dmi_system_id __initdata dell_device_table[] = { DMI_MATCH(DMI_CHASSIS_TYPE, "8"), }, }, + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_CHASSIS_TYPE, "9"), /*Laptop*/ + }, + }, + { + .ident = "Dell Computer Corporation", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"), + DMI_MATCH(DMI_CHASSIS_TYPE, "8"), + }, + }, { } };
@@ -397,3 +410,5 @@ MODULE_AUTHOR("Matthew Garrett <[email protected]>");MODULE_DESCRIPTION ("Dell laptop driver" );MODULE_LICENSE ("GPL" );MODULE_ALIAS ("dmi:*svnDellInc.:*:ct8:*" ); +MODULE_ALIAS ("dmi:*svnDellInc.:*:ct9:*" ); +MODULE_ALIAS ("dmi:*svnDellComputerCorporation.:*:ct8:*" );
drivers/s390/block/dasd_eckd.c +1 -1
@@ -63,7 +63,7 @@ static struct dasd_discipline dasd_eckd_discipline;static struct ccw_device_id dasd_eckd_ids[] = { {CCW_DEVICE_DEVTYPE (0x3990 ,0 ,0x3390 ,0 ), .driver_info =0x1 }, {CCW_DEVICE_DEVTYPE (0x2105 ,0 ,0x3390 ,0 ), .driver_info =0x2 }, - {CCW_DEVICE_DEVTYPE (0x3880 ,0 ,0x3390 ,0 ), .driver_info =0x3 }, + {CCW_DEVICE_DEVTYPE (0x3880 ,0 ,0x3380 ,0 ), .driver_info =0x3 }, {CCW_DEVICE_DEVTYPE (0x3990 ,0 ,0x3380 ,0 ), .driver_info =0x4 }, {CCW_DEVICE_DEVTYPE (0x2105 ,0 ,0x3380 ,0 ), .driver_info =0x5 }, {CCW_DEVICE_DEVTYPE (0x9343 ,0 ,0x9345 ,0 ), .driver_info =0x6 },
drivers/scsi/device_handler/scsi_dh_emc.c +4 -4
@@ -272,7 +272,7 @@ static struct request *get_req(struct scsi_device *sdev, int cmd,int len =0 ; rq =blk_get_request (sdev->request_queue, - (cmd ==MODE_SELECT ) ?WRITE :READ ,GFP_NOIO ); + (cmd !=INQUIRY ) ?WRITE :READ ,GFP_NOIO );if (!rq) {sdev_printk (KERN_INFO , sdev,"get_req: blk_get_request failed" );return NULL ;
@@ -284,16 +284,17 @@ static struct request *get_req(struct scsi_device *sdev, int cmd,switch (cmd) {case MODE_SELECT : len =sizeof (short_trespass); - rq->cmd_flags |=REQ_RW ; rq->cmd[1 ] =0x10 ; + rq->cmd[4 ] = len;break ;case MODE_SELECT_10 : len =sizeof (long_trespass); - rq->cmd_flags |=REQ_RW ; rq->cmd[1 ] =0x10 ; + rq->cmd[8 ] = len;break ;case INQUIRY : len =CLARIION_BUFFER_SIZE ; + rq->cmd[4 ] = len;memset (buffer,0 , len);break ;default :
@@ -301,7 +302,6 @@ static struct request *get_req(struct scsi_device *sdev, int cmd,break ; } - rq->cmd[4 ] = len; rq->cmd_type =REQ_TYPE_BLOCK_PC ; rq->cmd_flags |=REQ_FAILFAST_DEV |REQ_FAILFAST_TRANSPORT |REQ_FAILFAST_DRIVER ;
drivers/scsi/mpt2sas/mpt2sas_ctl.c +21 -2
@@ -636,6 +636,13 @@ _ctl_do_mpt_command(struct MPT2SAS_ADAPTER *ioc, data_out_sz = karg.data_out_size; data_in_sz = karg.data_in_size; +/* Check for overflow and wraparound */ +if (karg.data_sge_offset *4 > ioc->request_sz || + karg.data_sge_offset > (UINT_MAX /4 )) { + ret = -EINVAL ; + goto out; + } +/* copy in request message frame from user */ if (copy_from_user (mpi_request, mf, karg.data_sge_offset*4 )) { printk(KERN_ERR "failure at %s:%d/%s()!\n", __FILE__, __LINE__,
@@ -1809,7 +1816,7 @@ _ctl_diag_read_buffer(void __user *arg, enum block_state state)Mpi2DiagBufferPostReply_t *mpi_reply;int rc, i;u8 buffer_type; -unsigned long timeleft; +unsigned long timeleft, request_size, copy_size;u16 smid;u16 ioc_status;u8 issue_reset =0 ;
@@ -1845,6 +1852,8 @@ _ctl_diag_read_buffer(void __user *arg, enum block_state state)return -ENOMEM ; } + request_size = ioc->diag_buffer_sz[buffer_type]; +if ((karg.starting_offset %4 ) || (karg.bytes_to_read %4 )) { printk(MPT2SAS_ERR_FMT "%s: either the starting_offset " "or bytes_to_read are not 4 byte aligned\n", ioc->name,
@@ -1852,13 +1861,23 @@ _ctl_diag_read_buffer(void __user *arg, enum block_state state)return -EINVAL ; } +if (karg.starting_offset > request_size) +return -EINVAL ; + diag_data = (void *)(request_data + karg.starting_offset);dctlprintk (ioc,printk (MPT2SAS_DEBUG_FMT "%s: diag_buffer(%p), " "offset(%d), sz(%d)\n" , ioc->name, __func__, diag_data, karg.starting_offset, karg.bytes_to_read)); +/* Truncate data on requests that are too large */ +if ((diag_data + karg.bytes_to_read < diag_data) || + (diag_data + karg.bytes_to_read > request_data + request_size)) + copy_size = request_size - karg.starting_offset; +else + copy_size = karg.bytes_to_read; +if (copy_to_user ((void __user *)uarg->diagnostic_data, - diag_data, karg.bytes_to_read)) { + diag_data, copy_size)) {printk (MPT2SAS_ERR_FMT "%s: Unable to write " "mpt_diag_read_buffer_t data @ %p\n" , ioc->name, __func__, diag_data);
drivers/scsi/mpt2sas/mpt2sas_scsih.c +2 -2
@@ -945,7 +945,7 @@ _scsih_build_scatter_gather(struct MPT2SAS_ADAPTER *ioc,u32 chain_offset;u32 chain_length;u32 chain_flags; -u32 sges_left; +int sges_left;u32 sges_in_segment;u32 sgl_flags;u32 sgl_flags_last_element;
@@ -966,7 +966,7 @@ _scsih_build_scatter_gather(struct MPT2SAS_ADAPTER *ioc, sg_scmd =scsi_sglist (scmd); sges_left =scsi_dma_map (scmd); -if (!sges_left) { +if (sges_left <0 ) {sdev_printk (KERN_ERR , scmd->device,"pci_map_sg" " failed: request for %d bytes!\n" ,scsi_bufflen (scmd));return -ENOMEM ;
drivers/scsi/pmcraid.c +3 -0
@@ -3508,6 +3508,9 @@ static long pmcraid_ioctl_passthrough( rc = -EFAULT ; goto out_free_buffer; } + }else if (request_size <0 ) { + rc = -EINVAL ; + goto out_free_buffer; }/* check if we have any additional command parameters */
drivers/scsi/scsi_lib.c +6 -1
@@ -400,10 +400,15 @@ static inline int scsi_host_is_busy(struct Scsi_Host *shost)static void scsi_run_queue (struct request_queue *q) {struct scsi_device *sdev = q->queuedata; -struct Scsi_Host *shost = sdev->host; +struct Scsi_Host *shost;LIST_HEAD (starved_list);unsigned long flags; +/* if the device is dead, sdev will be NULL, so no queue to run */ +if (!sdev) +return ; + + shost = sdev->host;if (scsi_target (sdev)->single_lun)scsi_single_lun_run (sdev);
drivers/scsi/scsi_sysfs.c +8 -8
@@ -318,14 +318,8 @@ static void scsi_device_dev_release_usercontext(struct work_struct *work)kfree (evt); } -if (sdev->request_queue) { - sdev->request_queue->queuedata =NULL ; -/* user context needed to free queue */ -scsi_free_queue (sdev->request_queue); -/* temporary expedient, try to catch use of queue lock -* after free of sdev */ - sdev->request_queue =NULL ; - } +/* NULL queue means the device can't be used */ + sdev->request_queue =NULL ;scsi_target_reap (scsi_target (sdev));
@@ -925,6 +919,12 @@ void __scsi_remove_device(struct scsi_device *sdev)if (sdev->host->hostt->slave_destroy) sdev->host->hostt->slave_destroy (sdev);transport_destroy_device (dev); + +/* cause the request function to reject all I/O requests */ + sdev->request_queue->queuedata =NULL ; + +/* Freeing the queue signals to block that we're done */ +scsi_free_queue (sdev->request_queue);put_device (dev); }
drivers/serial/imx.c +2 -1
@@ -382,12 +382,13 @@ static void imx_start_tx(struct uart_port *port)static irqreturn_t imx_rtsint (int irq,void *dev_id) {struct imx_port *sport = dev_id; -unsigned int val =readl (sport->port.membase +USR1 ) &USR1_RTSS ; +unsigned int val;unsigned long flags;spin_lock_irqsave (&sport->port.lock, flags);writel (USR1_RTSD , sport->port.membase +USR1 ); + val =readl (sport->port.membase +USR1 ) &USR1_RTSS ;uart_handle_cts_change (&sport->port, !!val);wake_up_interruptible (&sport->port.state->port.delta_msr_wait);
drivers/staging/rtl8192su/r8192S_firmware.c +5 -0
@@ -68,6 +68,11 @@ bool FirmwareDownloadCode(struct net_device *dev, u8 * code_virtual_address,u32/* Allocate skb buffer to contain firmware info and tx descriptor info. */ skb =dev_alloc_skb (frag_length); +if (skb ==NULL ) { +RT_TRACE (COMP_ERR ,"(%s): unable to alloc skb buffer\n" , + __func__); + goto cmdsend_downloadcode_fail; + }memcpy ((unsigned char *)(skb->cb),&dev,sizeof (dev)); tcb_desc = (cb_desc *)(skb->cb +MAX_DEV_ADDR_SIZE );
drivers/staging/rtl8192su/r8192U_core.c +90 -30
194 lines not on this page · raw message
drivers/staging/rtl8192su/r819xU_cmdpkt.c +6 -0
@@ -56,6 +56,12 @@ SendTxCommandPacket(//Get TCB and local buffer from common pool. (It is shared by CmdQ, MgntQ, and USB coalesce DataQ) skb =dev_alloc_skb (USB_HWDESC_HEADER_LEN + DataLen +4 ); +if (skb ==NULL ) { +RT_TRACE (COMP_ERR ,"(%s): unable to alloc skb buffer\n" , + __func__); + rtStatus = false; +return rtStatus; + }memcpy ((unsigned char *)(skb->cb),&dev,sizeof (dev)); tcb_desc = (cb_desc *)(skb->cb +MAX_DEV_ADDR_SIZE ); tcb_desc->queue_index =TXCMD_QUEUE ;
drivers/staging/usbip/vhci_hcd.c +1 -1
@@ -1134,7 +1134,7 @@ static int vhci_hcd_probe(struct platform_device *pdev)usbip_uerr ("create hcd failed\n" );return -ENOMEM ; } - + hcd->has_tt =1 ;/* this is private data for vhci_hcd */ the_controller =hcd_to_vhci (hcd);
drivers/usb/core/devices.c +6 -4
@@ -65,8 +65,8 @@#define ALLOW_SERIAL_NUMBER static const char *format_topo = -/* T: Bus=dd Lev=dd Prnt=dd Port=dd Cnt=dd Dev#=ddd Spd=ddd MxCh=dd */ -"\nT: Bus=%2.2d Lev=%2.2d Prnt=%2.2d Port=%2.2d Cnt=%2.2d Dev#=%3d Spd=%3s MxCh=%2d\n" ; +/* T: Bus=dd Lev=dd Prnt=dd Port=dd Cnt=dd Dev#=ddd Spd=dddd MxCh=dd */ +"\nT: Bus=%2.2d Lev=%2.2d Prnt=%2.2d Port=%2.2d Cnt=%2.2d Dev#=%3d Spd=%-4s MxCh=%2d\n" ;static const char *format_string_manufacturer = /* S: Manufacturer=xxxx */
@@ -510,11 +510,13 @@ static ssize_t usb_device_dump(char __user **buffer, size_t *nbytes, speed ="1.5" ;break ;case USB_SPEED_UNKNOWN :/* usb 1.1 root hub code */ case USB_SPEED_FULL : - speed ="12 " ;break ; + speed ="12" ;break ;case USB_SPEED_HIGH : speed ="480" ;break ; +case USB_SPEED_SUPER : + speed ="5000" ;break ;default : - speed ="?? " ; + speed ="??" ; } data_end = pages_start + sprintf(pages_start, format_topo, bus->busnum, level, parent_devnum,
drivers/usb/core/hub.c +11 -4
@@ -1424,11 +1424,11 @@ void usb_set_device_state(struct usb_device *udev, || new_state == USB_STATE_SUSPENDED) ;/* No change to wakeup settings */ else if (new_state == USB_STATE_CONFIGURED) - device_init_wakeup(&udev->dev, + device_set_wakeup_capable(&udev->dev, (udev->actconfig->desc.bmAttributes & USB_CONFIG_ATT_WAKEUP)); else - device_init_wakeup(&udev->dev, 0); + device_set_wakeup_capable(&udev->dev, 0); }if (udev->state ==USB_STATE_SUSPENDED && new_state !=USB_STATE_SUSPENDED )
@@ -1786,10 +1786,17 @@ int usb_new_device(struct usb_device *udev) {int err; -/* Increment the parent's count of unsuspended children */ -if (udev->parent) +if (udev->parent) { +/* Increment the parent's count of unsuspended children */ usb_autoresume_device (udev->parent); +/* Initialize non-root-hub device wakeup to disabled; +* device (un)configuration controls wakeup capable +* sysfs power/wakeup controls wakeup enabled/disabled +*/ +device_init_wakeup (&udev->dev,0 ); + } + err =usb_enumerate_device (udev);/* Read descriptors */ if (err <0 ) goto fail;
drivers/usb/musb/musb_core.c +1 -0
@@ -1792,6 +1792,7 @@ allocate_instance(struct device *dev,INIT_LIST_HEAD (&musb->out_bulk); hcd->uses_new_polling =1 ; + hcd->has_tt =1 ; musb->vbuserr_retry =VBUSERR_RETRY_COUNT ; musb->a_wait_bcon =OTG_TIME_A_WAIT_BCON ;
drivers/video/backlight/mbp_nvidia_bl.c +18 -0
@@ -272,6 +272,24 @@ static const struct dmi_system_id __initdata mbp_device_table[] = { }, .driver_data = (void *)&nvidia_chipset_data, }, + { + .callback = mbp_dmi_match, + .ident = "MacBookAir 3,1", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "MacBookAir3,1"), + }, + .driver_data = (void *)&nvidia_chipset_data, + }, + { + .callback = mbp_dmi_match, + .ident = "MacBookAir 3,2", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "MacBookAir3,2"), + }, + .driver_data = (void *)&nvidia_chipset_data, + }, { } };
fs/btrfs/volumes.c +4 -0
@@ -21,6 +21,7 @@#include <linux/blkdev.h> #include <linux/random.h> #include <linux/iocontext.h> +#include <linux/capability.h> #include <asm/div64.h> #include "compat.h" #include "ctree.h"
@@ -1900,6 +1901,9 @@ int btrfs_balance(struct btrfs_root *dev_root)if (dev_root->fs_info->sb->s_flags &MS_RDONLY )return -EROFS ; +if (!capable (CAP_SYS_ADMIN )) +return -EPERM ; +mutex_lock (&dev_root->fs_info->volume_mutex); dev_root = dev_root->fs_info->dev_root;
fs/cifs/inode.c +6 -6
@@ -688,8 +688,10 @@ struct inode *cifs_root_iget(struct super_block *sb, unsigned long ino) rc =cifs_get_inode_info (&inode, full_path,NULL , sb, xid,NULL ); -if (!inode) -return ERR_PTR (-ENOMEM ); +if (!inode) { + inode =ERR_PTR (rc); + goto out; + }if (rc && cifs_sb->tcon->ipc) {cFYI (1 , ("ipc connection - fake read inode" ));
@@ -700,13 +702,11 @@ struct inode *cifs_root_iget(struct super_block *sb, unsigned long ino) inode->i_uid = cifs_sb->mnt_uid; inode->i_gid = cifs_sb->mnt_gid; }else if (rc) { -kfree (full_path); -_FreeXid (xid);iget_failed (inode); -return ERR_PTR (rc); + inode =ERR_PTR (rc); } - +out:kfree (full_path);/* can not call macro FreeXid here since in a void func * TODO: This is no longer true
fs/gfs2/quota.c +67 -65
110 lines not on this page · raw message
fs/nfs/nfs4proc.c +41 -2
43 lines not on this page · raw message
net/econet/af_econet.c +31 -31
62 lines not on this page · raw message
net/unix/af_unix.c +47 -6
53 lines not on this page · raw message
sound/pci/hda/patch_cirrus.c +43 -1
44 lines not on this page · raw message
tools/perf/Makefile +50 -25
75 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.