Skip to contentSkip to conversation

Linux 3.4.5

DISCUSSION Greg KH 1 participant 2 messages Jul 16, 2012

lore
Share & tools
lore

Greg KH

author
#0 lore raw

I'm announcing the release of the 3.4.5 kernel.

All users of the 3.4 kernel series must upgrade.

The updated 3.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-3.4.y
and can be browsed at the normal kernel.org git web browser:
http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary

thanks,

greg k-h

------------

 Documentation/device-mapper/verity.txt              |  131 +++++++-------------
 Documentation/stable_kernel_rules.txt               |    6 
 Makefile                                            |    2 
 arch/arm/mach-dove/include/mach/bridge-regs.h       |    1 
 arch/arm/mach-dove/include/mach/dove.h              |    1 
 arch/arm/mach-kirkwood/include/mach/bridge-regs.h   |    1 
 arch/arm/mach-kirkwood/include/mach/kirkwood.h      |    1 
 arch/arm/mach-mv78xx0/include/mach/bridge-regs.h    |    1 
 arch/arm/mach-mv78xx0/include/mach/mv78xx0.h        |    2 
 arch/arm/mach-orion5x/include/mach/bridge-regs.h    |    2 
 arch/arm/mach-orion5x/include/mach/orion5x.h        |    1 
 arch/arm/mach-tegra/reset.c                         |    2 
 arch/arm/mm/mmu.c                                   |   74 +++++++++++
 arch/arm/plat-orion/common.c                        |    2 
 arch/arm/plat-samsung/include/plat/map-s3c.h        |    2 
 arch/arm/plat-samsung/include/plat/watchdog-reset.h |    2 
 arch/powerpc/include/asm/hw_irq.h                   |   11 +
 arch/powerpc/kernel/irq.c                           |   50 +++++++
 arch/powerpc/kvm/book3s_hv_rmhandlers.S             |    2 
 arch/powerpc/mm/numa.c                              |    2 
 arch/powerpc/platforms/cell/pervasive.c             |   11 -
 arch/powerpc/platforms/pseries/iommu.c              |    4 
 arch/powerpc/platforms/pseries/processor_idle.c     |   17 +-
 arch/powerpc/xmon/xmon.c                            |    2 
 arch/x86/ia32/ia32_signal.c                         |    2 
 arch/x86/include/asm/cpufeature.h                   |    2 
 arch/x86/include/asm/pgtable-3level.h               |   54 ++++++++
 arch/x86/kernel/acpi/boot.c                         |   27 ++--
 arch/x86/kernel/cpu/scattered.c                     |    2 
 arch/x86/kernel/reboot.c                            |    8 +
 drivers/acpi/acpi_pad.c                             |    7 -
 drivers/acpi/acpica/hwsleep.c                       |   22 ---
 drivers/acpi/apei/apei-base.c                       |   17 ++
 drivers/acpi/apei/apei-internal.h                   |    9 +
 drivers/acpi/apei/ghes.c                            |    6 
 drivers/acpi/sleep.c                                |    4 
 drivers/acpi/sysfs.c                                |    4 
 drivers/acpi/video.c                                |    2 
 drivers/base/power/main.c                           |    6 
 drivers/block/umem.c                                |   40 ++++++
 drivers/block/xen-blkback/common.h                  |    2 
 drivers/clk/clk.c                                   |   27 ++--
 drivers/dma/pl330.c                                 |    2 
 drivers/gpio/gpio-wm8994.c                          |    5 
 drivers/gpu/drm/drm_edid.c                          |    2 
 drivers/gpu/drm/i915/i915_irq.c                     |   57 ++++----
 drivers/gpu/drm/i915/i915_suspend.c                 |    5 
 drivers/gpu/drm/nouveau/nouveau_fbcon.c             |    2 
 drivers/gpu/drm/radeon/radeon_gart.c                |   13 +
 drivers/gpu/drm/radeon/si.c                         |    4 
 drivers/hid/hid-multitouch.c                        |   58 +++++++-
 drivers/hwmon/applesmc.c                            |    4 
 drivers/hwmon/coretemp.c                            |    4 
 drivers/hwspinlock/hwspinlock_core.c                |    4 
 drivers/iommu/amd_iommu.c                           |    9 +
 drivers/iommu/amd_iommu_init.c                      |    4 
 drivers/iommu/tegra-smmu.c                          |    4 
 drivers/md/persistent-data/dm-space-map-checker.c   |   54 ++++----
 drivers/md/persistent-data/dm-space-map-disk.c      |   11 +
 drivers/md/persistent-data/dm-transaction-manager.c |   11 +
 drivers/md/raid10.c                                 |   12 +
 drivers/md/raid5.c                                  |   14 +-
 drivers/media/dvb/siano/smsusb.c                    |    2 
 drivers/media/video/gspca/gspca.c                   |    4 
 drivers/mtd/nand/cafe_nand.c                        |    2 
 drivers/net/bonding/bond_main.c                     |    9 -
 drivers/net/can/c_can/c_can.c                       |    4 
 drivers/net/can/flexcan.c                           |    4 
 drivers/net/dummy.c                                 |    4 
 drivers/net/ethernet/broadcom/bnx2x/bnx2x.h         |   15 --
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c     |   35 +++--
 drivers/net/ethernet/broadcom/tg3.c                 |    3 
 drivers/net/ethernet/emulex/benet/be_main.c         |    5 
 drivers/net/ethernet/intel/e1000e/defines.h         |    1 
 drivers/net/ethernet/intel/e1000e/ethtool.c         |    6 
 drivers/net/ethernet/intel/e1000e/mac.c             |    2 
 drivers/net/ethernet/intel/e1000e/netdev.c          |   79 ++----------
 drivers/net/ethernet/intel/e1000e/phy.c             |    8 -
 drivers/net/ethernet/intel/igbvf/ethtool.c          |   29 ++--
 drivers/net/ethernet/intel/ixgbe/ixgbe.h            |    4 
 drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c        |    2 
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c       |   14 +-
 drivers/net/ethernet/marvell/sky2.c                 |   10 -
 drivers/net/ethernet/nxp/lpc_eth.c                  |   11 -
 drivers/net/ethernet/realtek/r8169.c                |    3 
 drivers/net/ethernet/sun/niu.c                      |   12 -
 drivers/net/macvtap.c                               |   25 +++
 drivers/net/usb/ipheth.c                            |    5 
 drivers/net/usb/qmi_wwan.c                          |  109 +++++++++-------
 drivers/net/wireless/ath/ath.h                      |    1 
 drivers/net/wireless/ath/ath9k/ath9k.h              |    1 
 drivers/net/wireless/ath/ath9k/htc_drv_main.c       |    5 
 drivers/net/wireless/ath/ath9k/hw.c                 |   16 ++
 drivers/net/wireless/ath/ath9k/main.c               |   18 +-
 drivers/net/wireless/ath/ath9k/recv.c               |    7 -
 drivers/net/wireless/ath/ath9k/xmit.c               |   31 ++--
 drivers/net/wireless/ath/key.c                      |    4 
 drivers/net/wireless/ipw2x00/ipw.h                  |   23 +++
 drivers/net/wireless/ipw2x00/ipw2100.c              |    4 
 drivers/net/wireless/ipw2x00/ipw2200.c              |    4 
 drivers/net/wireless/iwlwifi/iwl-mac80211.c         |   12 +
 drivers/net/wireless/iwlwifi/iwl-trans-pcie.c       |    6 
 drivers/net/wireless/mwifiex/11n_rxreorder.c        |    5 
 drivers/net/wireless/mwifiex/11n_rxreorder.h        |    7 +
 drivers/net/wireless/mwifiex/cfg80211.c             |   21 +--
 drivers/net/wireless/mwifiex/wmm.c                  |    3 
 drivers/net/wireless/rtl818x/rtl8187/leds.c         |    2 
 drivers/net/wireless/rtlwifi/rtl8192cu/sw.c         |    3 
 drivers/net/xen-netfront.c                          |    8 -
 drivers/oprofile/oprofile_perf.c                    |    2 
 drivers/pci/pci-driver.c                            |   12 +
 drivers/pci/pci.c                                   |    5 
 drivers/pci/quirks.c                                |   26 ---
 drivers/remoteproc/Kconfig                          |    2 
 drivers/rpmsg/virtio_rpmsg_bus.c                    |   55 +++++++-
 drivers/rtc/rtc-ab8500.c                            |    2 
 drivers/rtc/rtc-mxc.c                               |    5 
 drivers/rtc/rtc-spear.c                             |    2 
 drivers/scsi/aic94xx/aic94xx_task.c                 |    2 
 drivers/scsi/libsas/sas_ata.c                       |   12 -
 drivers/scsi/sd.c                                   |    2 
 drivers/staging/iio/adc/ad7606_core.c               |    1 
 drivers/staging/rtl8712/usb_intf.c                  |    2 
 drivers/target/tcm_fc/tfc_sess.c                    |    3 
 drivers/usb/class/cdc-wdm.c                         |    2 
 drivers/usb/core/hub.c                              |   18 +-
 drivers/usb/host/xhci-hub.c                         |   44 +++++-
 drivers/usb/host/xhci-ring.c                        |   11 +
 drivers/usb/host/xhci.h                             |    6 
 drivers/usb/serial/cp210x.c                         |   11 +
 drivers/usb/serial/metro-usb.c                      |    8 -
 drivers/usb/serial/option.c                         |   34 +++++
 drivers/usb/storage/scsiglue.c                      |    6 
 drivers/usb/storage/unusual_devs.h                  |    7 -
 drivers/video/omap2/dss/apply.c                     |    2 
 drivers/video/omap2/dss/dispc.c                     |    5 
 drivers/video/omap2/dss/dss.h                       |    3 
 fs/btrfs/tree-log.c                                 |    6 
 fs/cifs/connect.c                                   |   41 +++---
 fs/ecryptfs/kthread.c                               |    2 
 fs/ecryptfs/miscdev.c                               |   48 ++++---
 fs/exec.c                                           |    2 
 fs/lockd/clntlock.c                                 |   13 +
 fs/lockd/svc.c                                      |   38 +++--
 fs/nfs/callback.c                                   |   16 +-
 fs/nfs/idmap.c                                      |   13 +
 fs/nfsd/nfsctl.c                                    |   12 +
 fs/nfsd/nfssvc.c                                    |   29 +++-
 fs/nilfs2/gcinode.c                                 |    2 
 fs/nilfs2/segment.c                                 |    2 
 fs/ocfs2/file.c                                     |    6 
 fs/open.c                                           |    6 
 fs/ramfs/file-nommu.c                               |    1 
 fs/splice.c                                         |   35 +++--
 fs/udf/super.c                                      |  102 +++++++++------
 include/asm-generic/pgtable.h                       |   32 ++++
 include/linux/aio.h                                 |    1 
 include/linux/lockd/bind.h                          |    4 
 include/linux/memblock.h                            |    4 
 include/linux/mm_types.h                            |   10 +
 include/linux/mmzone.h                              |    2 
 include/linux/pci.h                                 |    2 
 include/linux/rpmsg.h                               |    6 
 include/linux/skbuff.h                              |    7 -
 include/linux/splice.h                              |    8 -
 include/linux/sunrpc/svc.h                          |    1 
 include/net/cipso_ipv4.h                            |   29 ++++
 include/net/inetpeer.h                              |    5 
 include/net/sch_generic.h                           |    7 -
 include/scsi/libsas.h                               |    6 
 include/scsi/scsi_cmnd.h                            |    8 +
 include/scsi/scsi_device.h                          |    1 
 kernel/exit.c                                       |    1 
 kernel/relay.c                                      |    5 
 kernel/trace/trace.c                                |    8 -
 lib/dynamic_queue_limits.c                          |   18 +-
 mm/compaction.c                                     |    5 
 mm/madvise.c                                        |   16 +-
 mm/memblock.c                                       |  123 ++++++++++++------
 mm/nobootmem.c                                      |   38 +++--
 mm/shmem.c                                          |    3 
 mm/vmscan.c                                         |    7 -
 net/batman-adv/routing.c                            |    2 
 net/batman-adv/translation-table.c                  |    8 -
 net/bridge/br_if.c                                  |    1 
 net/bridge/br_netlink.c                             |    2 
 net/bridge/br_private.h                             |    1 
 net/can/raw.c                                       |    3 
 net/core/dev.c                                      |   23 ---
 net/core/drop_monitor.c                             |  102 +++++----------
 net/core/neighbour.c                                |   14 --
 net/core/netpoll.c                                  |   11 -
 net/core/skbuff.c                                   |    3 
 net/core/sock.c                                     |    7 -
 net/ipv4/inetpeer.c                                 |   16 +-
 net/ipv6/ip6_fib.c                                  |    2 
 net/ipv6/route.c                                    |   41 ++++--
 net/iucv/af_iucv.c                                  |    1 
 net/l2tp/l2tp_eth.c                                 |    2 
 net/l2tp/l2tp_ip.c                                  |    9 -
 net/mac80211/mlme.c                                 |   24 +--
 net/mac80211/rx.c                                   |    5 
 net/nfc/nci/ntf.c                                   |   10 -
 net/nfc/rawsock.c                                   |    5 
 net/sunrpc/rpcb_clnt.c                              |   12 +
 net/sunrpc/svc.c                                    |   23 +--
 net/wireless/reg.c                                  |    2 
 sound/pci/hda/hda_codec.c                           |    2 
 sound/pci/hda/patch_realtek.c                       |    1 
 sound/pci/hda/patch_sigmatel.c                      |    4 
 sound/soc/codecs/tlv320aic3x.c                      |    4 
 sound/soc/codecs/tlv320aic3x.h                      |    1 
 sound/soc/codecs/wm2200.c                           |    1 
 tools/hv/hv_kvp_daemon.c                            |   10 +
 214 files changed, 1801 insertions(+), 1010 deletions(-)

Alan Stern (3):
SCSI & usb-storage: add try_rc_10_first flag
usb-storage: revert commit afff07e61a52 (Add 090c:1000 to unusal-devs)
PCI: EHCI: fix crash during suspend on ASUS computers

Alex Deucher (1):
drm/radeon: fix VM page table setup on SI

Alexander Duyck (1):
ixgbe: Do not pad FCoE frames as this can cause issues with FCoE DDP

Andrea Arcangeli (2):
mm: pmd_read_atomic: fix 32bit PAE pmd walk vs pmd_populate SMP race condition
thp: avoid atomic64_read in pmd_read_atomic for 32bit PAE

Andrew Bird (Sphere Systems) (2):
USB: qmi_wwan: Make forced int 4 whitelist generic
USB: qmi_wwan: Add ZTE (Vodafone) K3520-Z

Andrew Lunn (2):
ARM: Orion: Fix Virtual/Physical mixup with watchdog
ARM: Orion: Fix WDT compile for Dove and MV78xx0

Andy Lutomirski (1):
mm: Hold a file reference in madvise_remove

Anton Blanchard (2):
powerpc: check_and_cede_processor() never cedes powerpc/xmon: Use cpumask iterator to avoid warning

Antonio Quartulli (1):

      batman-adv: fix skb->data assignment

Ben Skeggs (1):
drm/nouveau/fbcon: using nv_two_heads is not a good idea

Benjamin Herrenschmidt (2):
powerpc: More fixes for lazy IRQ vs. idle
powerpc: Fix build of some debug irq code

Benjamin Tissoires (1):
HID: hid-multitouch: fix wrong protocol detection

Benoît Thébaudeau (1):
drivers/rtc/rtc-mxc.c: fix irq enabled interrupts warning

Bing Zhao (1):
mwifiex: fix wrong return values in add_virtual_intf() error cases

Bjørn Mork (4):
net: qmi_wwan: fix Gobi device probing
net: qmi_wwan: fix Oops while disconnecting
USB: cdc-wdm: fix lockup on error in wdm_read
USB: option: add ZTE MF60

Bob Liu (1):
fs: ramfs: file-nommu: add SetPageUptodate()

Bruce Allan (2):
e1000e: remove use of IP payload checksum
e1000e: test for valid check_reset_block function pointer

Bryan Schumaker (1):
NFS: Force the legacy idmapper to be single threaded

Chris Mason (1):
Btrfs: run delayed directory updates during log replay

Chris Wilson (1):
drm/i915: Refactor the deferred PM_IIR handling into a single function

Craig Shelley (1):

      USB: CP210x Add 10 Device IDs

Dan Carpenter (2):
can: c_can: precedence error in c_can_chip_config()
mtd: cafe_nand: fix an & vs | mistake

Dan Rosenberg (1):
NFC: Prevent multiple buffer overflows in NCI

Dan Williams (1):
SCSI: libsas: fix taskfile corruption in sas_ata_qc_fill_rtf

Daniel Vetter (2):
drm/edid: don't return stack garbage from supports_rb drm/i915: rip out the PM_IIR WARN

David Henningsson (1):
ALSA: hda - Add Realtek ALC280 codec support

David Rientjes (1):
mm, thp: abort compaction if migration page cannot be charged to memcg

David S. Miller (1):
Revert "niu: Add support for byte queue limits."

Davide Gerhard (1):
ipheth: add support for iPad

Devendra Naga (2):
r8169: call netif_napi_del at errpaths and at driver unload drivers/rtc/rtc-spear.c: fix use-after-free in spear_rtc_remove()

Dmitry Shmygov (1):
USB: option: add id for Cellient MEN-200

Eliad Peller (2):
cfg80211: fix potential deadlock in regulatory
mac80211: clear ifmgd->bssid only after building DELBA

Eric Dumazet (16):
drop_monitor: dont sleep in atomic context
inetpeer: fix a race in inetpeer_gc_worker()
net: l2tp_eth: fix kernel panic on rmmod l2tp_eth
l2tp: fix a race in l2tp_ip_sendmsg()
lpc_eth: add missing ndo_change_mtu()
lpc_eth: fix tx completion
net: neighbour: fix neigh_dump_info()
be2net: fix a race in be_xmit()
dummy: fix rcu_sched self-detected stalls
bonding: Fix corrupted queue_mapping
netpoll: fix netpoll_send_udp() bugs
bnx2x: fix checksum validation
bnx2x: fix panic when TX ring is full
net: remove skb_orphan_try()
NFC: Return from rawsock_release when sk is NULL
splice: fix racy pipe->buffers uses

Felix Fietkau (3):
ath9k: fix a tx rate duration calculation bug
ath9k: fix invalid pointer access in the tx path
ath9k: fix dynamic WEP related regression

Feng Tang (3):
ACPI: Make acpi_skip_timer_override cover all source_irq==0 cases
ACPI: Remove one board specific WARN when ignoring timer overriding
ACPI: Add a quirk for "AMILO PRO V2030" to ignore the timer overriding

Forest Bond (1):
USB: option: Add USB ID for Novatel Ovation MC551

Gaosen Zhang (1):
USB: option: Add MEDIATEK product ids

Gavin Shan (2):
mm/memblock: cleanup on duplicate VA/PA conversion mm/memblock: fix memory leak on extending regions

Greg Kroah-Hartman (1):

      Linux 3.4.5

Greg Pearson (1):
mm/memblock: fix overlapping allocation when doubling reserved array

H. Peter Anvin (1):
x86, cpufeature: Rename X86_FEATURE_DTS to X86_FEATURE_DTHERM

Hans de Goede (1):
gspca-core: Fix buffers staying in queued state after a stream_off

Hebbar, Gururaja (1):
ASoC: tlv320aic3x: Fix codec pll configure bug

Henrik Rydberg (1):
hwmon: (applesmc) Limit key length in warning messages

Hiroaki SHIMODA (3):
bql: Fix POSDIFF() to integer overflow aware.
bql: Avoid unneeded limit decrement.
bql: Avoid possible inconsistent calculation.

Hiroshi DOYU (1):
iommu/tegra: smmu: Fix unsleepable memory allocation

Huang Ying (1):
ACPI, APEI, Avoid too much error reporting in runtime

Hui Wang (1):
can: flexcan: use be32_to_cpup to handle the value of dt entry

Ian Campbell (1):
xen/netfront: teardown the device before unregistering it.

Jan Kara (3):
udf: Use 'ret' instead of abusing 'i' in udf_load_logicalvol()
udf: Avoid run away loop when partition table length is corrupted
udf: Fortify loading of sparing table

Jason Wang (2):
net: sock: validate data_len before allocating skb in sock_alloc_send_pskb()
macvtap: zerocopy: validate vectors before building skb

Jeff Layton (1):
cifs: when server doesn't set CAP_LARGE_READ_X, cap default rsize at MaxBufferSize

Jiang Liu (1):
memory hotplug: fix invalid memory access caused by stale kswapd pointer

Joerg Roedel (1):
iommu/amd: Initialize dma_ops for hotplug and sriov devices

Johan Hovold (1):
USB: metro-usb: fix tty_flip_buffer_push use

Johannes Berg (4):
mac80211: correct behaviour on unrecognised action frames
iwlwifi: fix activating inactive stations
mac80211: fix queues stuck issue with HT bandwidth change
iwlwifi: remove log_event debugfs file debugging is disabled

Jonathan Nieder (1):
ACPI / PM: Leave Bus Master Arbitration enabled for suspend/resume

Jonghwan Choi (1):
ARM: SAMSUNG: Should check for IS_ERR(clk) instead of NULL

Jose Miguel Goncalves (1):
ARM: SAMSUNG: Fix for S3C2412 EBI memory mapping

Junxiao Bi (2):
aio: make kiocb->private NUll in init_sync_kiocb()
ocfs2: clear unaligned io flag when dio fails

Konrad Rzeszutek Wilk (1):
xen/blkback: Copy id field when doing BLKIF_DISCARD.

Konstantin Khlebnikov (1):
mm: correctly synchronize rss-counters at exit/exec

Larry Finger (1):
rtlwifi: rtl8192cu: New USB IDs

Lars-Peter Clausen (1):
staging:iio:ad7606: Re-add missing scale attribute

Lee Jones (1):
drivers/rtc/rtc-ab8500.c: use IRQF_ONESHOT when requesting a threaded IRQ

Linus Torvalds (1):
vfs: make O_PATH file descriptors usable for 'fchdir()'

Lubomir Schmidt (1):
staging: r8712u: Add new USB IDs

Luis Henriques (1):
ocfs2: fix NULL pointer dereference in __ocfs2_change_file_space()

Mandeep Singh Baines (1):
PM / Sleep: Prevent waiting forever on asynchronous suspend after abort

Marek Lindner (1):
batman-adv: only drop packets of known wifi clients

Mark Brown (2):
ASoC: wm2200: Add missing BCLK rate
gpiolib: wm8994: Pay attention to the value set when enabling as output

Mark Rustad (2):
tcm_fc: Resolve suspicious RCU usage warnings
SCSI: Fix NULL dereferences in scsi_cmd_to_driver

Matt Carlson (1):
tg3: Apply short DMA frag workaround to 5906

Mel Gorman (1):
stable: Allow merging of backports for serious user-visible performance issues

Michael Krufky (1):
media: smsusb: add autodetection support for USB ID 2040:f5a0

Michael Neuling (3):
powerpc: Fix uninitialised error in numa.c powerpc/pseries: Fix software invalidate TCE powerpc/kvm: sldi should be sld

Mike Snitzer (3):
dm persistent data: fix shadow_info_leak on dm_tm_destroy dm persistent data: handle space map checker creation failure dm persistent data: fix allocation failure in space map checker init

Milan Broz (1):
dm: verity fix documentation

Mitch A Williams (1):
igbvf: fix divide by zero

Mohammed Shafi Shajakhan (3):
ath9k: Fix a WARNING on suspend/resume with IBSS
ath9k: Fix softlockup in AR9485
ath9k_hw: avoid possible infinite loop in ar9003_get_pll_sqsum_dvc

NeilBrown (2):
md/raid10: Don't try to recovery unmatched (and unused) chunks. md/raid10: fix failure when trying to repair a read error.

Nicolas Pitre (1):
ARM: 7438/1: fill possible PMD empty section gaps

Ohad Ben-Cohen (4):
rpmsg: avoid premature deallocation of endpoints
rpmsg: make sure inflight messages don't invoke just-removed callbacks remoteproc/omap: fix randconfig unmet direct dependencies
remoteproc: fix missing CONFIG_FW_LOADER configurations

Olaf Hering (1):
Tools: hv: verify origin of netlink connector message

Panayiotis Karabassis (1):
ath9k: enable serialize_regmode for non-PCIE AR9287

Paul Moore (1):
cipso: handle CIPSO options correctly when NetLabel is disabled

Pavel Vasilyev (1):
ACPI sysfs.c strlen fix

Pravin B Shelar (1):

      mm: fix slab->page _count corruption when using slub

Rafael J. Wysocki (1):
ACPI / PM: Make acpi_pm_device_sleep_state() follow the specification

Rajendra Nayak (2):
clk: Allow late cache allocation for clk->parents
clk: fix parent validation in __clk_set_parent()

Rajkumar Manoharan (1):
ath9k_htc: configure bssid on ASSOC/IBSS change

Ryusuke Konishi (1):
nilfs2: ensure proper cache clearing for gc-inodes

Sarah Sharp (1):
xhci: Fix hang on back-to-back Set TR Deq Ptr commands.

Shaohua Li (1):
raid5: delayed stripe fix

Shinya Kuribayashi (1):
hwspinlock/core: use global ID to register hwspinlocks on multiple devices

Shuah Khan (1):
iommu/amd: Fix missing iommu_shutdown initialization in passthrough mode

Stanislav Kinsbursky (4):
Lockd: pass network namespace to creation and destruction routines
SUNRPC: new svc_bind() routine introduced
SUNRPC: move per-net operations from svc_destroy()
NFS: hard-code init_net for NFS callback transports

Stanislav Yakovlev (1):
net/wireless: ipw2x00: add supported cipher suites to wiphy initialization

Stanislaw Gruszka (1):

      rtl8187: ->brightness_set can not sleep

Stanislaw Ledwon (1):
usb: Add support for root hub port status CAS

Stephen Warren (1):
ARM: tegra: make tegra_cpu_reset_handler_enable() __init

Steven Rostedt (1):
powerpc/ftrace: Do not trace restore_interrupts()

Stone Piao (2):
mwifiex: fix 11n rx packet drop issue
mwifiex: fix WPS eapol handshake failure

Stuart Hayes (1):
acpi_pad: fix power_saving thread deadlock

Suresh Jayaraman (1):
cifs: fix parsing of password mount option

Suresh Siddha (1):
x86, compat: Use test_thread_flag(TIF_IA32) in compat signal delivery

Takashi Iwai (3):
ALSA: hda - Fix memory leaks at module unload
ALSA: hda - Fix power-map regression for HP dv6 & co drm/i915: Fix eDP blank screen after S3 resume on HP desktops

Tao Guo (1):
umem: fix up unplugging

Thomas Graf (2):
ipv6: fib: Restore NTF_ROUTER exception in fib6_age()
ipv6: Move ipv6 proc file registration to end of init order

Tom Hughes (1):
ath9k: fix panic caused by returning a descriptor we have queued for reuse

Tomi Valkeinen (1):
OMAPDSS: use DSI_FIFO_BUG workaround only for manual update displays

Tushar Behera (1):
dmaengine: pl330: dont complete descriptor for cyclic dma

Tyler Hicks (3):
eCryptfs: Gracefully refuse miscdev file ops on inherited/passed files
eCryptfs: Fix lockdep warning in miscdev operations
eCryptfs: Properly check for O_RDONLY flag before doing privileged open

Vaibhav Nagarnaik (1):
tracing: change CPU ring buffer state from tracing_cpumask

Will Deacon (1):
oprofile: perf: use NR_CPUS instead or nr_cpumask_bits for static array

Yinghai Lu (1):
memblock: free allocated memblock_reserved_regions later

Zhang Rui (2):
ACPI video: Still use ACPI backlight control if _DOS doesn't exist ACPI, x86: fix Dell M6600 ACPI reboot regression via DMI

majianpeng (2):
md/raid5: In ops_run_io, inc nr_pending before calling md_wait_for_blocked_rdev md/raid5: Do not add data_offset before call to is_badblock

stephen hemminger (2):
sky2: fix checksum bit management on some chips
bridge: Assign rtnl_link_ops to bridge devices created via ioctl (v2)

author
#1 lore raw
Documentation/device-mapper/verity.txt +46 -85
index 32e4879..9884681 100644
@@ -7,39 +7,39 @@ This target is read-only.
 
 Construction Parameters
 =======================
-    <version> <dev> <hash_dev> <hash_start>
+    <version> <dev> <hash_dev>
     <data_block_size> <hash_block_size>
     <num_data_blocks> <hash_start_block>
     <algorithm> <digest> <salt>
 
 <version>
-    This is the version number of the on-disk format.
+    This is the type of the on-disk hash format.
 
     0 is the original format used in the Chromium OS.
-	The salt is appended when hashing, digests are stored continuously and
-	the rest of the block is padded with zeros.
+      The salt is appended when hashing, digests are stored continuously and
+      the rest of the block is padded with zeros.
 
     1 is the current format that should be used for new devices.
-	The salt is prepended when hashing and each digest is
-	padded with zeros to the power of two.
+      The salt is prepended when hashing and each digest is
+      padded with zeros to the power of two.
 
 <dev>
-    This is the device containing the data the integrity of which needs to be
+    This is the device containing data, the integrity of which needs to be
     checked.  It may be specified as a path, like /dev/sdaX, or a device number,
     <major>:<minor>.
 
 <hash_dev>
-    This is the device that that supplies the hash tree data.  It may be
+    This is the device that supplies the hash tree data.  It may be
     specified similarly to the device path and may be the same device.  If the
-    same device is used, the hash_start should be outside of the dm-verity
-    configured device size.
+    same device is used, the hash_start should be outside the configured
+    dm-verity device.
 
 <data_block_size>
-    The block size on a data device.  Each block corresponds to one digest on
-    the hash device.
+    The block size on a data device in bytes.
+    Each block corresponds to one digest on the hash device.
 
 <hash_block_size>
-    The size of a hash block.
+    The size of a hash block in bytes.
 
 <num_data_blocks>
     The number of data blocks on the data device.  Additional blocks are
@@ -65,7 +65,7 @@ Construction Parameters
 Theory of operation
 ===================
 
-dm-verity is meant to be setup as part of a verified boot path.  This
+dm-verity is meant to be set up as part of a verified boot path.  This
 may be anything ranging from a boot using tboot or trustedgrub to just
 booting from a known-good device (like a USB drive or CD).
 
@@ -73,20 +73,20 @@ When a dm-verity device is configured, it is expected that the caller
 has been authenticated in some way (cryptographic signatures, etc).
 After instantiation, all hashes will be verified on-demand during
 disk access.  If they cannot be verified up to the root node of the
-tree, the root hash, then the I/O will fail.  This should identify
+tree, the root hash, then the I/O will fail.  This should detect
 tampering with any data on the device and the hash data.
 
 Cryptographic hashes are used to assert the integrity of the device on a
-per-block basis.  This allows for a lightweight hash computation on first read
-into the page cache.  Block hashes are stored linearly-aligned to the nearest
-block the size of a page.
+per-block basis. This allows for a lightweight hash computation on first read
+into the page cache. Block hashes are stored linearly, aligned to the nearest
+block size.
 
 Hash Tree
 ---------
 
 Each node in the tree is a cryptographic hash.  If it is a leaf node, the hash
-is of some block data on disk.  If it is an intermediary node, then the hash is
-of a number of child nodes.
+of some data block on disk is calculated. If it is an intermediary node,
+the hash of a number of child nodes is calculated.
 
 Each entry in the tree is a collection of neighboring nodes that fit in one
 block.  The number is determined based on block_size and the size of the
@@ -110,63 +110,23 @@ alg = sha256, num_blocks = 32768, block_size = 4096
 On-disk format
 ==============
 
-Below is the recommended on-disk format. The verity kernel code does not
-read the on-disk header. It only reads the hash blocks which directly
-follow the header. It is expected that a user-space tool will verify the
-integrity of the verity_header and then call dmsetup with the correct
-parameters. Alternatively, the header can be omitted and the dmsetup
-parameters can be passed via the kernel command-line in a rooted chain
-of trust where the command-line is verified.
+The verity kernel code does not read the verity metadata on-disk header.
+It only reads the hash blocks which directly follow the header.
+It is expected that a user-space tool will verify the integrity of the
+verity header.
 
-The on-disk format is especially useful in cases where the hash blocks
-are on a separate partition. The magic number allows easy identification
-of the partition contents. Alternatively, the hash blocks can be stored
-in the same partition as the data to be verified. In such a configuration
-the filesystem on the partition would be sized a little smaller than
-the full-partition, leaving room for the hash blocks.
-
-struct superblock {
-	uint8_t signature[8]
-		"verity\0\0";
-
-	uint8_t version;
-		1 - current format
-
-	uint8_t data_block_bits;
-		log2(data block size)
-
-	uint8_t hash_block_bits;
-		log2(hash block size)
-
-	uint8_t pad1[1];
-		zero padding
-
-	uint16_t salt_size;
-		big-endian salt size
-
-	uint8_t pad2[2];
-		zero padding
-
-	uint32_t data_blocks_hi;
-		big-endian high 32 bits of the 64-bit number of data blocks
-
-	uint32_t data_blocks_lo;
-		big-endian low 32 bits of the 64-bit number of data blocks
-
-	uint8_t algorithm[16];
-		cryptographic algorithm
-
-	uint8_t salt[384];
-		salt (the salt size is specified above)
-
-	uint8_t pad3[88];
-		zero padding to 512-byte boundary
-}
+Alternatively, the header can be omitted and the dmsetup parameters can
+be passed via the kernel command-line in a rooted chain of trust where
+the command-line is verified.
 
 Directly following the header (and with sector number padded to the next hash
 block boundary) are the hash blocks which are stored a depth at a time
 (starting from the root), sorted in order of increasing index.
 
+The full specification of kernel parameters and on-disk metadata format
+is available at the cryptsetup project's wiki page
+  http://code.google.com/p/cryptsetup/wiki/DMVerity
+
 Status
 ======
 V (for Valid) is returned if every check performed so far was valid.
@@ -174,21 +134,22 @@ If any check failed, C (for Corruption) is returned.
 
 Example
 =======
-
-Setup a device:
-  dmsetup create vroot --table \
-    "0 2097152 "\
-    "verity 1 /dev/sda1 /dev/sda2 4096 4096 2097152 1 "\
+Set up a device:
+  # dmsetup create vroot --readonly --table \
+    "0 2097152 verity 1 /dev/sda1 /dev/sda2 4096 4096 262144 1 sha256 "\
     "4392712ba01368efdf14b05c76f9e4df0d53664630b5d48632ed17a137f39076 "\
     "1234000000000000000000000000000000000000000000000000000000000000"
 
 A command line tool veritysetup is available to compute or verify
-the hash tree or activate the kernel driver.  This is available from
-the LVM2 upstream repository and may be supplied as a package called
-device-mapper-verity-tools:
-    git://sources.redhat.com/git/lvm2
-    http://sourceware.org/git/?p=lvm2.git
-    http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/verity?cvsroot=lvm2
-
-veritysetup -a vroot /dev/sda1 /dev/sda2 \
-	4392712ba01368efdf14b05c76f9e4df0d53664630b5d48632ed17a137f39076
+the hash tree or activate the kernel device. This is available from
+the cryptsetup upstream repository http://code.google.com/p/cryptsetup/
+(as a libcryptsetup extension).
+
+Create hash on the device:
+  # veritysetup format /dev/sda1 /dev/sda2
+  ...
+  Root hash: 4392712ba01368efdf14b05c76f9e4df0d53664630b5d48632ed17a137f39076
+
+Activate the device:
+  # veritysetup create vroot /dev/sda1 /dev/sda2 \
+    4392712ba01368efdf14b05c76f9e4df0d53664630b5d48632ed17a137f39076
Documentation/stable_kernel_rules.txt +6 -0
index f0ab5cf..4a7b54b 100644
@@ -12,6 +12,12 @@ Rules on what kind of patches are accepted, and which ones are not, into the
    marked CONFIG_BROKEN), an oops, a hang, data corruption, a real
    security issue, or some "oh, that's not good" issue.  In short, something
    critical.
+ - Serious issues as reported by a user of a distribution kernel may also
+   be considered if they fix a notable performance or interactivity issue.
+   As these fixes are not as obvious and have a higher risk of a subtle
+   regression they should only be submitted by a distribution kernel
+   maintainer and include an addendum linking to a bugzilla entry if it
+   exists and additional information on the user-visible impact.
  - New device IDs and quirks are also accepted.
  - No "theoretical race condition" issues, unless an explanation of how the
    race can be exploited is also provided.
Makefile +1 -1
index 058320d..a2e69a0 100644
@@ -1,6 +1,6 @@
 VERSION = 3
 PATCHLEVEL = 4
-SUBLEVEL = 4
+SUBLEVEL = 5
 EXTRAVERSION =
 NAME = Saber-toothed Squirrel
 
arch/arm/mach-dove/include/mach/bridge-regs.h +1 -0
index 226949d..f953bb5 100644
@@ -50,5 +50,6 @@
 #define POWER_MANAGEMENT	(BRIDGE_VIRT_BASE | 0x011c)
 
 #define TIMER_VIRT_BASE		(BRIDGE_VIRT_BASE | 0x0300)
+#define TIMER_PHYS_BASE         (BRIDGE_PHYS_BASE | 0x0300)
 
 #endif
arch/arm/mach-dove/include/mach/dove.h +1 -0
index ad1165d..d52b0ef 100644
@@ -78,6 +78,7 @@
 
 /* North-South Bridge */
 #define BRIDGE_VIRT_BASE	(DOVE_SB_REGS_VIRT_BASE | 0x20000)
+#define BRIDGE_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE | 0x20000)
 
 /* Cryptographic Engine */
 #define DOVE_CRYPT_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE | 0x30000)
arch/arm/mach-kirkwood/include/mach/bridge-regs.h +1 -0
index 957bd79..086f25e 100644
@@ -38,6 +38,7 @@
 #define IRQ_MASK_HIGH_OFF	0x0014
 
 #define TIMER_VIRT_BASE		(BRIDGE_VIRT_BASE | 0x0300)
+#define TIMER_PHYS_BASE		(BRIDGE_PHYS_BASE | 0x0300)
 
 #define L2_CONFIG_REG		(BRIDGE_VIRT_BASE | 0x0128)
 #define L2_WRITETHROUGH		0x00000010
arch/arm/mach-kirkwood/include/mach/kirkwood.h +1 -0
index fede3d5..c5b6851 100644
@@ -80,6 +80,7 @@
 #define  UART1_VIRT_BASE	(DEV_BUS_VIRT_BASE | 0x2100)
 
 #define BRIDGE_VIRT_BASE	(KIRKWOOD_REGS_VIRT_BASE | 0x20000)
+#define BRIDGE_PHYS_BASE	(KIRKWOOD_REGS_PHYS_BASE | 0x20000)
 
 #define CRYPTO_PHYS_BASE	(KIRKWOOD_REGS_PHYS_BASE | 0x30000)
 
arch/arm/mach-mv78xx0/include/mach/bridge-regs.h +1 -0
index c64dbb9..eb187e0 100644
@@ -31,5 +31,6 @@
 #define IRQ_MASK_HIGH_OFF	0x0014
 
 #define TIMER_VIRT_BASE		(BRIDGE_VIRT_BASE | 0x0300)
+#define TIMER_PHYS_BASE		(BRIDGE_PHYS_BASE | 0x0300)
 
 #endif
arch/arm/mach-mv78xx0/include/mach/mv78xx0.h +2 -0
index 3674497..e807c4c 100644
@@ -42,6 +42,7 @@
 #define MV78XX0_CORE0_REGS_PHYS_BASE	0xf1020000
 #define MV78XX0_CORE1_REGS_PHYS_BASE	0xf1024000
 #define MV78XX0_CORE_REGS_VIRT_BASE	0xfe400000
+#define MV78XX0_CORE_REGS_PHYS_BASE	0xfe400000
 #define MV78XX0_CORE_REGS_SIZE		SZ_16K
 
 #define MV78XX0_PCIE_IO_PHYS_BASE(i)	(0xf0800000 + ((i) << 20))
@@ -59,6 +60,7 @@
  * Core-specific peripheral registers.
  */
 #define BRIDGE_VIRT_BASE	(MV78XX0_CORE_REGS_VIRT_BASE)
+#define BRIDGE_PHYS_BASE	(MV78XX0_CORE_REGS_PHYS_BASE)
 
 /*
  * Register Map
arch/arm/mach-orion5x/include/mach/bridge-regs.h +1 -1
index 96484bc..11a3c1e 100644
@@ -35,5 +35,5 @@
 #define MAIN_IRQ_MASK		(ORION5X_BRIDGE_VIRT_BASE | 0x204)
 
 #define TIMER_VIRT_BASE		(ORION5X_BRIDGE_VIRT_BASE | 0x300)
-
+#define TIMER_PHYS_BASE		(ORION5X_BRIDGE_PHYS_BASE | 0x300)
 #endif
arch/arm/mach-orion5x/include/mach/orion5x.h +1 -0
index 2745f5d..683e085 100644
@@ -82,6 +82,7 @@
 #define  UART1_VIRT_BASE		(ORION5X_DEV_BUS_VIRT_BASE | 0x2100)
 
 #define ORION5X_BRIDGE_VIRT_BASE	(ORION5X_REGS_VIRT_BASE | 0x20000)
+#define ORION5X_BRIDGE_PHYS_BASE	(ORION5X_REGS_PHYS_BASE | 0x20000)
 
 #define ORION5X_PCI_VIRT_BASE		(ORION5X_REGS_VIRT_BASE | 0x30000)
 
arch/arm/mach-tegra/reset.c +1 -1
index 4d6a2ee..5beb7eb 100644
@@ -33,7 +33,7 @@
 
 static bool is_enabled;
 
-static void tegra_cpu_reset_handler_enable(void)
+static void __init tegra_cpu_reset_handler_enable(void)
 {
 	void __iomem *iram_base = IO_ADDRESS(TEGRA_IRAM_RESET_BASE);
 	void __iomem *evp_cpu_reset =
arch/arm/mm/mmu.c +74 -0

86 lines not on this page · raw message

arch/arm/plat-orion/common.c +1 -1
index 74daf5e..331f8bb 100644
@@ -570,7 +570,7 @@ void __init orion_spi_1_init(unsigned long mapbase,
 static struct orion_wdt_platform_data orion_wdt_data;
 
 static struct resource orion_wdt_resource =
-		DEFINE_RES_MEM(TIMER_VIRT_BASE, 0x28);
+		DEFINE_RES_MEM(TIMER_PHYS_BASE, 0x28);
 
 static struct platform_device orion_wdt_device = {
 	.name		= "orion_wdt",
arch/arm/plat-samsung/include/plat/map-s3c.h +1 -1
index 7d04875..c0c70a8 100644
@@ -22,7 +22,7 @@
 #define S3C24XX_VA_WATCHDOG	S3C_VA_WATCHDOG
 
 #define S3C2412_VA_SSMC		S3C_ADDR_CPU(0x00000000)
-#define S3C2412_VA_EBI		S3C_ADDR_CPU(0x00010000)
+#define S3C2412_VA_EBI		S3C_ADDR_CPU(0x00100000)
 
 #define S3C2410_PA_UART		(0x50000000)
 #define S3C24XX_PA_UART		S3C2410_PA_UART
arch/arm/plat-samsung/include/plat/watchdog-reset.h +1 -1
index f19aff1..bc4db9b 100644
@@ -25,7 +25,7 @@ static inline void arch_wdt_reset(void)
 
 	__raw_writel(0, S3C2410_WTCON);	  /* disable watchdog, to be safe  */
 
-	if (s3c2410_wdtclk)
+	if (!IS_ERR(s3c2410_wdtclk))
 		clk_enable(s3c2410_wdtclk);
 
 	/* put initial values into count and data */
arch/powerpc/include/asm/hw_irq.h +9 -2
index 102abd6..907e9fd 100644
@@ -85,8 +85,8 @@ static inline bool arch_irqs_disabled(void)
 }
 
 #ifdef CONFIG_PPC_BOOK3E
-#define __hard_irq_enable()	asm volatile("wrteei 1" : : : "memory");
-#define __hard_irq_disable()	asm volatile("wrteei 0" : : : "memory");
+#define __hard_irq_enable()	asm volatile("wrteei 1" : : : "memory")
+#define __hard_irq_disable()	asm volatile("wrteei 0" : : : "memory")
 #else
 #define __hard_irq_enable()	__mtmsrd(local_paca->kernel_msr | MSR_EE, 1)
 #define __hard_irq_disable()	__mtmsrd(local_paca->kernel_msr, 1)
@@ -102,6 +102,11 @@ static inline void hard_irq_disable(void)
 /* include/linux/interrupt.h needs hard_irq_disable to be a macro */
 #define hard_irq_disable	hard_irq_disable
 
+static inline bool lazy_irq_pending(void)
+{
+	return !!(get_paca()->irq_happened & ~PACA_IRQ_HARD_DIS);
+}
+
 /*
  * This is called by asynchronous interrupts to conditionally
  * re-enable hard interrupts when soft-disabled after having
@@ -119,6 +124,8 @@ static inline bool arch_irq_disabled_regs(struct pt_regs *regs)
 	return !regs->softe;
 }
 
+extern bool prep_irq_for_idle(void);
+
 #else /* CONFIG_PPC64 */
 
 #define SET_MSR_EE(x)	mtmsr(x)
arch/powerpc/kernel/irq.c +48 -2

68 lines not on this page · raw message

arch/powerpc/kvm/book3s_hv_rmhandlers.S +1 -1
index b70bf22..24b23a4 100644
@@ -776,7 +776,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_201)
 	lwz	r3,VCORE_NAPPING_THREADS(r5)
 	lwz	r4,VCPU_PTID(r9)
 	li	r0,1
-	sldi	r0,r0,r4
+	sld	r0,r0,r4
 	andc.	r3,r3,r0		/* no sense IPI'ing ourselves */
 	beq	43f
 	mulli	r4,r4,PACA_SIZE		/* get paca for thread 0 */
arch/powerpc/mm/numa.c +1 -1
index b6edbb3..6e8f677 100644
@@ -635,7 +635,7 @@ static inline int __init read_usm_ranges(const u32 **usm)
  */
 static void __init parse_drconf_memory(struct device_node *memory)
 {
-	const u32 *dm, *usm;
+	const u32 *uninitialized_var(dm), *usm;
 	unsigned int n, rc, ranges, is_kexec_kdump = 0;
 	unsigned long lmb_size, base, size, sz;
 	int nid;
arch/powerpc/platforms/cell/pervasive.c +6 -5
index efdacc8..d17e98b 100644
@@ -42,11 +42,9 @@ static void cbe_power_save(void)
 {
 	unsigned long ctrl, thread_switch_control;
 
-	/*
-	 * We need to hard disable interrupts, the local_irq_enable() done by
-	 * our caller upon return will hard re-enable.
-	 */
-	hard_irq_disable();
+	/* Ensure our interrupt state is properly tracked */
+	if (!prep_irq_for_idle())
+		return;
 
 	ctrl = mfspr(SPRN_CTRLF);
 
@@ -81,6 +79,9 @@ static void cbe_power_save(void)
 	 */
 	ctrl &= ~(CTRL_RUNLATCH | CTRL_TE);
 	mtspr(SPRN_CTRLT, ctrl);
+
+	/* Re-enable interrupts in MSR */
+	__hard_irq_enable();
 }
 
 static int cbe_system_reset_exception(struct pt_regs *regs)
arch/powerpc/platforms/pseries/iommu.c +2 -2
index 0915b1a..2d311c0 100644
@@ -106,7 +106,7 @@ static int tce_build_pSeries(struct iommu_table *tbl, long index,
 		tcep++;
 	}
 
-	if (tbl->it_type == TCE_PCI_SWINV_CREATE)
+	if (tbl->it_type & TCE_PCI_SWINV_CREATE)
 		tce_invalidate_pSeries_sw(tbl, tces, tcep - 1);
 	return 0;
 }
@@ -121,7 +121,7 @@ static void tce_free_pSeries(struct iommu_table *tbl, long index, long npages)
 	while (npages--)
 		*(tcep++) = 0;
 
-	if (tbl->it_type == TCE_PCI_SWINV_FREE)
+	if (tbl->it_type & TCE_PCI_SWINV_FREE)
 		tce_invalidate_pSeries_sw(tbl, tces, tcep - 1);
 }
 
arch/powerpc/platforms/pseries/processor_idle.c +10 -7
index 41a34bc..c71be66 100644
@@ -99,15 +99,18 @@ out:
 static void check_and_cede_processor(void)
 {
 	/*
-	 * Interrupts are soft-disabled at this point,
-	 * but not hard disabled. So an interrupt might have
-	 * occurred before entering NAP, and would be potentially
-	 * lost (edge events, decrementer events, etc...) unless
-	 * we first hard disable then check.
+	 * Ensure our interrupt state is properly tracked,
+	 * also checks if no interrupt has occurred while we
+	 * were soft-disabled
 	 */
-	hard_irq_disable();
-	if (get_paca()->irq_happened == 0)
+	if (prep_irq_for_idle()) {
 		cede_processor();
+#ifdef CONFIG_TRACE_IRQFLAGS
+		/* Ensure that H_CEDE returns with IRQs on */
+		if (WARN_ON(!(mfmsr() & MSR_EE)))
+			__hard_irq_enable();
+#endif
+	}
 }
 
 static int dedicated_cede_loop(struct cpuidle_device *dev,
arch/powerpc/xmon/xmon.c +1 -1
index 0f3ab06..eab3492 100644
@@ -971,7 +971,7 @@ static int cpu_cmd(void)
 		/* print cpus waiting or in xmon */
 		printf("cpus stopped:");
 		count = 0;
-		for (cpu = 0; cpu < NR_CPUS; ++cpu) {
+		for_each_possible_cpu(cpu) {
 			if (cpumask_test_cpu(cpu, &cpus_in_xmon)) {
 				if (count == 0)
 					printf(" %x", cpu);
arch/x86/ia32/ia32_signal.c +1 -1
index a69245b..4f5bfac 100644
@@ -38,7 +38,7 @@
 int copy_siginfo_to_user32(compat_siginfo_t __user *to, siginfo_t *from)
 {
 	int err = 0;
-	bool ia32 = is_ia32_task();
+	bool ia32 = test_thread_flag(TIF_IA32);
 
 	if (!access_ok(VERIFY_WRITE, to, sizeof(compat_siginfo_t)))
 		return -EFAULT;
arch/x86/include/asm/cpufeature.h +1 -1
index 340ee49..f91e80f 100644
@@ -176,7 +176,7 @@
 #define X86_FEATURE_XSAVEOPT	(7*32+ 4) /* Optimized Xsave */
 #define X86_FEATURE_PLN		(7*32+ 5) /* Intel Power Limit Notification */
 #define X86_FEATURE_PTS		(7*32+ 6) /* Intel Package Thermal Status */
-#define X86_FEATURE_DTS		(7*32+ 7) /* Digital Thermal Sensor */
+#define X86_FEATURE_DTHERM	(7*32+ 7) /* Digital Thermal Sensor */
 #define X86_FEATURE_HW_PSTATE	(7*32+ 8) /* AMD HW-PState */
 
 /* Virtualization flags: Linux defined, word 8 */
arch/x86/include/asm/pgtable-3level.h +54 -0

60 lines not on this page · raw message

arch/x86/kernel/acpi/boot.c +16 -11
index 7c439fe..bbdffc2 100644
@@ -422,12 +422,14 @@ acpi_parse_int_src_ovr(struct acpi_subtable_header * header,
 		return 0;
 	}
 
-	if (intsrc->source_irq == 0 && intsrc->global_irq == 2) {
+	if (intsrc->source_irq == 0) {
 		if (acpi_skip_timer_override) {
-			printk(PREFIX "BIOS IRQ0 pin2 override ignored.\n");
+			printk(PREFIX "BIOS IRQ0 override ignored.\n");
 			return 0;
 		}
-		if (acpi_fix_pin2_polarity && (intsrc->inti_flags & ACPI_MADT_POLARITY_MASK)) {
+
+		if ((intsrc->global_irq == 2) && acpi_fix_pin2_polarity
+			&& (intsrc->inti_flags & ACPI_MADT_POLARITY_MASK)) {
 			intsrc->inti_flags &= ~ACPI_MADT_POLARITY_MASK;
 			printk(PREFIX "BIOS IRQ0 pin2 override: forcing polarity to high active.\n");
 		}
@@ -1334,17 +1336,12 @@ static int __init dmi_disable_acpi(const struct dmi_system_id *d)
 }
 
 /*
- * Force ignoring BIOS IRQ0 pin2 override
+ * Force ignoring BIOS IRQ0 override
  */
 static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d)
 {
-	/*
-	 * The ati_ixp4x0_rev() early PCI quirk should have set
-	 * the acpi_skip_timer_override flag already:
-	 */
 	if (!acpi_skip_timer_override) {
-		WARN(1, KERN_ERR "ati_ixp4x0 quirk not complete.\n");
-		pr_notice("%s detected: Ignoring BIOS IRQ0 pin2 override\n",
+		pr_notice("%s detected: Ignoring BIOS IRQ0 override\n",
 			d->ident);
 		acpi_skip_timer_override = 1;
 	}
@@ -1438,7 +1435,7 @@ static struct dmi_system_id __initdata acpi_dmi_table_late[] = {
 	 * is enabled.  This input is incorrectly designated the
 	 * ISA IRQ 0 via an interrupt source override even though
 	 * it is wired to the output of the master 8259A and INTIN0
-	 * is not connected at all.  Force ignoring BIOS IRQ0 pin2
+	 * is not connected at all.  Force ignoring BIOS IRQ0
 	 * override in that cases.
 	 */
 	{
@@ -1473,6 +1470,14 @@ static struct dmi_system_id __initdata acpi_dmi_table_late[] = {
 		     DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq 6715b"),
 		     },
 	 },
+	{
+	 .callback = dmi_ignore_irq0_timer_override,
+	 .ident = "FUJITSU SIEMENS",
+	 .matches = {
+		     DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
+		     DMI_MATCH(DMI_PRODUCT_NAME, "AMILO PRO V2030"),
+		     },
+	 },
 	{}
 };
 
arch/x86/kernel/cpu/scattered.c +1 -1
index addf9e8..ee8e9ab 100644
@@ -31,7 +31,7 @@ void __cpuinit init_scattered_cpuid_features(struct cpuinfo_x86 *c)
 	const struct cpuid_bit *cb;
 
 	static const struct cpuid_bit __cpuinitconst cpuid_bits[] = {
-		{ X86_FEATURE_DTS,		CR_EAX, 0, 0x00000006, 0 },
+		{ X86_FEATURE_DTHERM,		CR_EAX, 0, 0x00000006, 0 },
 		{ X86_FEATURE_IDA,		CR_EAX, 1, 0x00000006, 0 },
 		{ X86_FEATURE_ARAT,		CR_EAX, 2, 0x00000006, 0 },
 		{ X86_FEATURE_PLN,		CR_EAX, 4, 0x00000006, 0 },
arch/x86/kernel/reboot.c +8 -0
index d840e69..3034ee5 100644
@@ -471,6 +471,14 @@ static struct dmi_system_id __initdata pci_reboot_dmi_table[] = {
 			DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 990"),
 		},
 	},
+	{	/* Handle problems with rebooting on the Precision M6600. */
+		.callback = set_pci_reboot,
+		.ident = "Dell OptiPlex 990",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Precision M6600"),
+		},
+	},
 	{ }
 };
 
drivers/acpi/acpi_pad.c +4 -3
index a43fa1a..1502c502 100644
@@ -36,6 +36,7 @@
 #define ACPI_PROCESSOR_AGGREGATOR_DEVICE_NAME "Processor Aggregator"
 #define ACPI_PROCESSOR_AGGREGATOR_NOTIFY 0x80
 static DEFINE_MUTEX(isolated_cpus_lock);
+static DEFINE_MUTEX(round_robin_lock);
 
 static unsigned long power_saving_mwait_eax;
 
@@ -107,7 +108,7 @@ static void round_robin_cpu(unsigned int tsk_index)
 	if (!alloc_cpumask_var(&tmp, GFP_KERNEL))
 		return;
 
-	mutex_lock(&isolated_cpus_lock);
+	mutex_lock(&round_robin_lock);
 	cpumask_clear(tmp);
 	for_each_cpu(cpu, pad_busy_cpus)
 		cpumask_or(tmp, tmp, topology_thread_cpumask(cpu));
@@ -116,7 +117,7 @@ static void round_robin_cpu(unsigned int tsk_index)
 	if (cpumask_empty(tmp))
 		cpumask_andnot(tmp, cpu_online_mask, pad_busy_cpus);
 	if (cpumask_empty(tmp)) {
-		mutex_unlock(&isolated_cpus_lock);
+		mutex_unlock(&round_robin_lock);
 		return;
 	}
 	for_each_cpu(cpu, tmp) {
@@ -131,7 +132,7 @@ static void round_robin_cpu(unsigned int tsk_index)
 	tsk_in_cpu[tsk_index] = preferred_cpu;
 	cpumask_set_cpu(preferred_cpu, pad_busy_cpus);
 	cpu_weight[preferred_cpu]++;
-	mutex_unlock(&isolated_cpus_lock);
+	mutex_unlock(&round_robin_lock);
 
 	set_cpus_allowed_ptr(current, cpumask_of(preferred_cpu));
 }
drivers/acpi/acpica/hwsleep.c +0 -22
index 0ed85ca..615996a 100644
@@ -95,18 +95,6 @@ acpi_status acpi_hw_legacy_sleep(u8 sleep_state, u8 flags)
 		return_ACPI_STATUS(status);
 	}
 
-	if (sleep_state != ACPI_STATE_S5) {
-		/*
-		 * Disable BM arbitration. This feature is contained within an
-		 * optional register (PM2 Control), so ignore a BAD_ADDRESS
-		 * exception.
-		 */
-		status = acpi_write_bit_register(ACPI_BITREG_ARB_DISABLE, 1);
-		if (ACPI_FAILURE(status) && (status != AE_BAD_ADDRESS)) {
-			return_ACPI_STATUS(status);
-		}
-	}
-
 	/*
 	 * 1) Disable/Clear all GPEs
 	 * 2) Enable all wakeup GPEs
@@ -364,16 +352,6 @@ acpi_status acpi_hw_legacy_wake(u8 sleep_state, u8 flags)
 				    [ACPI_EVENT_POWER_BUTTON].
 				    status_register_id, ACPI_CLEAR_STATUS);
 
-	/*
-	 * Enable BM arbitration. This feature is contained within an
-	 * optional register (PM2 Control), so ignore a BAD_ADDRESS
-	 * exception.
-	 */
-	status = acpi_write_bit_register(ACPI_BITREG_ARB_DISABLE, 0);
-	if (ACPI_FAILURE(status) && (status != AE_BAD_ADDRESS)) {
-		return_ACPI_STATUS(status);
-	}
-
 	acpi_hw_execute_sleep_method(METHOD_PATHNAME__SST, ACPI_SST_WORKING);
 	return_ACPI_STATUS(status);
 }
drivers/acpi/apei/apei-base.c +15 -2
index 5577762..6686b1e 100644
@@ -243,7 +243,7 @@ static int pre_map_gar_callback(struct apei_exec_context *ctx,
 	u8 ins = entry->instruction;
 
 	if (ctx->ins_table[ins].flags & APEI_EXEC_INS_ACCESS_REGISTER)
-		return acpi_os_map_generic_address(&entry->register_region);
+		return apei_map_generic_address(&entry->register_region);
 
 	return 0;
 }
@@ -276,7 +276,7 @@ static int post_unmap_gar_callback(struct apei_exec_context *ctx,
 	u8 ins = entry->instruction;
 
 	if (ctx->ins_table[ins].flags & APEI_EXEC_INS_ACCESS_REGISTER)
-		acpi_os_unmap_generic_address(&entry->register_region);
+		apei_unmap_generic_address(&entry->register_region);
 
 	return 0;
 }
@@ -606,6 +606,19 @@ static int apei_check_gar(struct acpi_generic_address *reg, u64 *paddr,
 	return 0;
 }
 
+int apei_map_generic_address(struct acpi_generic_address *reg)
+{
+	int rc;
+	u32 access_bit_width;
+	u64 address;
+
+	rc = apei_check_gar(reg, &address, &access_bit_width);
+	if (rc)
+		return rc;
+	return acpi_os_map_generic_address(reg);
+}
+EXPORT_SYMBOL_GPL(apei_map_generic_address);
+
 /* read GAR in interrupt (including NMI) or process context */
 int apei_read(u64 *val, struct acpi_generic_address *reg)
 {
drivers/acpi/apei/apei-internal.h +9 -0
index cca240a..f220d64 100644
@@ -7,6 +7,8 @@
 #define APEI_INTERNAL_H
 
 #include <linux/cper.h>
+#include <linux/acpi.h>
+#include <linux/acpi_io.h>
 
 struct apei_exec_context;
 
@@ -68,6 +70,13 @@ static inline int apei_exec_run_optional(struct apei_exec_context *ctx, u8 actio
 /* IP has been set in instruction function */
 #define APEI_EXEC_SET_IP	1
 
+int apei_map_generic_address(struct acpi_generic_address *reg);
+
+static inline void apei_unmap_generic_address(struct acpi_generic_address *reg)
+{
+	acpi_os_unmap_generic_address(reg);
+}
+
 int apei_read(u64 *val, struct acpi_generic_address *reg);
 int apei_write(u64 val, struct acpi_generic_address *reg);
 
drivers/acpi/apei/ghes.c +3 -3
index 9b3cac0..1599566 100644
@@ -301,7 +301,7 @@ static struct ghes *ghes_new(struct acpi_hest_generic *generic)
 	if (!ghes)
 		return ERR_PTR(-ENOMEM);
 	ghes->generic = generic;
-	rc = acpi_os_map_generic_address(&generic->error_status_address);
+	rc = apei_map_generic_address(&generic->error_status_address);
 	if (rc)
 		goto err_free;
 	error_block_length = generic->error_block_length;
@@ -321,7 +321,7 @@ static struct ghes *ghes_new(struct acpi_hest_generic *generic)
 	return ghes;
 
 err_unmap:
-	acpi_os_unmap_generic_address(&generic->error_status_address);
+	apei_unmap_generic_address(&generic->error_status_address);
 err_free:
 	kfree(ghes);
 	return ERR_PTR(rc);
@@ -330,7 +330,7 @@ err_free:
 static void ghes_fini(struct ghes *ghes)
 {
 	kfree(ghes->estatus);
-	acpi_os_unmap_generic_address(&ghes->generic->error_status_address);
+	apei_unmap_generic_address(&ghes->generic->error_status_address);
 }
 
 enum {
drivers/acpi/sleep.c +2 -2
index eb6fd23..2377445 100644
@@ -732,8 +732,8 @@ int acpi_pm_device_sleep_state(struct device *dev, int *d_min_p)
 	 * can wake the system.  _S0W may be valid, too.
 	 */
 	if (acpi_target_sleep_state == ACPI_STATE_S0 ||
-	    (device_may_wakeup(dev) &&
-	     adev->wakeup.sleep_state <= acpi_target_sleep_state)) {
+	    (device_may_wakeup(dev) && adev->wakeup.flags.valid &&
+	     adev->wakeup.sleep_state >= acpi_target_sleep_state)) {
 		acpi_status status;
 
 		acpi_method[3] = 'W';
drivers/acpi/sysfs.c +2 -2
index 9f66181..240a244 100644
@@ -173,7 +173,7 @@ static int param_set_trace_state(const char *val, struct kernel_param *kp)
 {
 	int result = 0;
 
-	if (!strncmp(val, "enable", strlen("enable") - 1)) {
+	if (!strncmp(val, "enable", strlen("enable"))) {
 		result = acpi_debug_trace(trace_method_name, trace_debug_level,
 					  trace_debug_layer, 0);
 		if (result)
@@ -181,7 +181,7 @@ static int param_set_trace_state(const char *val, struct kernel_param *kp)
 		goto exit;
 	}
 
-	if (!strncmp(val, "disable", strlen("disable") - 1)) {
+	if (!strncmp(val, "disable", strlen("disable"))) {
 		int name = 0;
 		result = acpi_debug_trace((char *)&name, trace_debug_level,
 					  trace_debug_layer, 0);
drivers/acpi/video.c +2 -0
index 66e8f73..48b5a3c 100644
@@ -558,6 +558,8 @@ acpi_video_bus_DOS(struct acpi_video_bus *video, int bios_flag, int lcd_flag)
 	union acpi_object arg0 = { ACPI_TYPE_INTEGER };
 	struct acpi_object_list args = { 1, &arg0 };
 
+	if (!video->cap._DOS)
+		return 0;
 
 	if (bios_flag < 0 || bios_flag > 3 || lcd_flag < 0 || lcd_flag > 1)
 		return -EINVAL;
drivers/base/power/main.c +4 -2
index b462c0e..3085f9b 100644
@@ -1021,7 +1021,7 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async)
 	dpm_wait_for_children(dev, async);
 
 	if (async_error)
-		return 0;
+		goto Complete;
 
 	pm_runtime_get_noresume(dev);
 	if (pm_runtime_barrier(dev) && device_may_wakeup(dev))
@@ -1030,7 +1030,7 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async)
 	if (pm_wakeup_pending()) {
 		pm_runtime_put_sync(dev);
 		async_error = -EBUSY;
-		return 0;
+		goto Complete;
 	}
 
 	device_lock(dev);
@@ -1087,6 +1087,8 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async)
 	}
 
 	device_unlock(dev);
+
+ Complete:
 	complete_all(&dev->power.completion);
 
 	if (error) {
drivers/block/umem.c +40 -0
index aa27120..9a72277 100644
@@ -513,6 +513,44 @@ static void process_page(unsigned long data)
 	}
 }
 
+struct mm_plug_cb {
+	struct blk_plug_cb cb;
+	struct cardinfo *card;
+};
+
+static void mm_unplug(struct blk_plug_cb *cb)
+{
+	struct mm_plug_cb *mmcb = container_of(cb, struct mm_plug_cb, cb);
+
+	spin_lock_irq(&mmcb->card->lock);
+	activate(mmcb->card);
+	spin_unlock_irq(&mmcb->card->lock);
+	kfree(mmcb);
+}
+
+static int mm_check_plugged(struct cardinfo *card)
+{
+	struct blk_plug *plug = current->plug;
+	struct mm_plug_cb *mmcb;
+
+	if (!plug)
+		return 0;
+
+	list_for_each_entry(mmcb, &plug->cb_list, cb.list) {
+		if (mmcb->cb.callback == mm_unplug && mmcb->card == card)
+			return 1;
+	}
+	/* Not currently on the callback list */
+	mmcb = kmalloc(sizeof(*mmcb), GFP_ATOMIC);
+	if (!mmcb)
+		return 0;
+
+	mmcb->card = card;
+	mmcb->cb.callback = mm_unplug;
+	list_add(&mmcb->cb.list, &plug->cb_list);
+	return 1;
+}
+
 static void mm_make_request(struct request_queue *q, struct bio *bio)
 {
 	struct cardinfo *card = q->queuedata;
@@ -523,6 +561,8 @@ static void mm_make_request(struct request_queue *q, struct bio *bio)
 	*card->biotail = bio;
 	bio->bi_next = NULL;
 	card->biotail = &bio->bi_next;
+	if (bio->bi_rw & REQ_SYNC || !mm_check_plugged(card))
+		activate(card);
 	spin_unlock_irq(&card->lock);
 
 	return;
drivers/block/xen-blkback/common.h +2 -0
index 773cf27..9ad3b5e 100644
@@ -257,6 +257,7 @@ static inline void blkif_get_x86_32_req(struct blkif_request *dst,
 		break;
 	case BLKIF_OP_DISCARD:
 		dst->u.discard.flag = src->u.discard.flag;
+		dst->u.discard.id = src->u.discard.id;
 		dst->u.discard.sector_number = src->u.discard.sector_number;
 		dst->u.discard.nr_sectors = src->u.discard.nr_sectors;
 		break;
@@ -287,6 +288,7 @@ static inline void blkif_get_x86_64_req(struct blkif_request *dst,
 		break;
 	case BLKIF_OP_DISCARD:
 		dst->u.discard.flag = src->u.discard.flag;
+		dst->u.discard.id = src->u.discard.id;
 		dst->u.discard.sector_number = src->u.discard.sector_number;
 		dst->u.discard.nr_sectors = src->u.discard.nr_sectors;
 		break;
drivers/clk/clk.c +15 -12
index 9cf6f59..2da025e 100644
@@ -997,7 +997,7 @@ static struct clk *__clk_init_parent(struct clk *clk)
 
 	if (!clk->parents)
 		clk->parents =
-			kmalloc((sizeof(struct clk*) * clk->num_parents),
+			kzalloc((sizeof(struct clk*) * clk->num_parents),
 					GFP_KERNEL);
 
 	if (!clk->parents)
@@ -1062,21 +1062,24 @@ static int __clk_set_parent(struct clk *clk, struct clk *parent)
 
 	old_parent = clk->parent;
 
-	/* find index of new parent clock using cached parent ptrs */
-	for (i = 0; i < clk->num_parents; i++)
-		if (clk->parents[i] == parent)
-			break;
+	if (!clk->parents)
+		clk->parents = kzalloc((sizeof(struct clk*) * clk->num_parents),
+								GFP_KERNEL);
 
 	/*
-	 * find index of new parent clock using string name comparison
-	 * also try to cache the parent to avoid future calls to __clk_lookup
+	 * find index of new parent clock using cached parent ptrs,
+	 * or if not yet cached, use string name comparison and cache
+	 * them now to avoid future calls to __clk_lookup.
 	 */
-	if (i == clk->num_parents)
-		for (i = 0; i < clk->num_parents; i++)
-			if (!strcmp(clk->parent_names[i], parent->name)) {
+	for (i = 0; i < clk->num_parents; i++) {
+		if (clk->parents && clk->parents[i] == parent)
+			break;
+		else if (!strcmp(clk->parent_names[i], parent->name)) {
+			if (clk->parents)
 				clk->parents[i] = __clk_lookup(parent->name);
-				break;
-			}
+			break;
+		}
+	}
 
 	if (i == clk->num_parents) {
 		pr_debug("%s: clock %s is not a possible parent of clock %s\n",
drivers/dma/pl330.c +1 -1
index fa3fb21..8c44f17 100644
@@ -2322,7 +2322,7 @@ static void pl330_tasklet(unsigned long data)
 	/* Pick up ripe tomatoes */
 	list_for_each_entry_safe(desc, _dt, &pch->work_list, node)
 		if (desc->status == DONE) {
-			if (pch->cyclic)
+			if (!pch->cyclic)
 				dma_cookie_complete(&desc->txd);
 			list_move_tail(&desc->node, &list);
 		}
drivers/gpio/gpio-wm8994.c +4 -1
index 92ea535..aa61ad2 100644
@@ -89,8 +89,11 @@ static int wm8994_gpio_direction_out(struct gpio_chip *chip,
 	struct wm8994_gpio *wm8994_gpio = to_wm8994_gpio(chip);
 	struct wm8994 *wm8994 = wm8994_gpio->wm8994;
 
+	if (value)
+		value = WM8994_GPN_LVL;
+
 	return wm8994_set_bits(wm8994, WM8994_GPIO_1 + offset,
-			       WM8994_GPN_DIR, 0);
+			       WM8994_GPN_DIR | WM8994_GPN_LVL, value);
 }
 
 static void wm8994_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
drivers/gpu/drm/drm_edid.c +1 -1
index 5a18b0d..6e38325 100644
@@ -574,7 +574,7 @@ static bool
 drm_monitor_supports_rb(struct edid *edid)
 {
 	if (edid->revision >= 4) {
-		bool ret;
+		bool ret = false;
 		drm_for_each_detailed_block((u8 *)edid, is_rb, &ret);
 		return ret;
 	}
drivers/gpu/drm/i915/i915_irq.c +28 -29

75 lines not on this page · raw message

drivers/gpu/drm/i915/i915_suspend.c +4 -1
index 2b5eb22..0d13778 100644
@@ -740,8 +740,11 @@ static void i915_restore_display(struct drm_device *dev)
 	if (HAS_PCH_SPLIT(dev)) {
 		I915_WRITE(BLC_PWM_PCH_CTL1, dev_priv->saveBLC_PWM_CTL);
 		I915_WRITE(BLC_PWM_PCH_CTL2, dev_priv->saveBLC_PWM_CTL2);
-		I915_WRITE(BLC_PWM_CPU_CTL, dev_priv->saveBLC_CPU_PWM_CTL);
+		/* NOTE: BLC_PWM_CPU_CTL must be written after BLC_PWM_CPU_CTL2;
+		 * otherwise we get blank eDP screen after S3 on some machines
+		 */
 		I915_WRITE(BLC_PWM_CPU_CTL2, dev_priv->saveBLC_CPU_PWM_CTL2);
+		I915_WRITE(BLC_PWM_CPU_CTL, dev_priv->saveBLC_CPU_PWM_CTL);
 		I915_WRITE(PCH_PP_ON_DELAYS, dev_priv->savePP_ON_DELAYS);
 		I915_WRITE(PCH_PP_OFF_DELAYS, dev_priv->savePP_OFF_DELAYS);
 		I915_WRITE(PCH_PP_DIVISOR, dev_priv->savePP_DIVISOR);
drivers/gpu/drm/nouveau/nouveau_fbcon.c +1 -1
index 8113e92..6fd2211 100644
@@ -497,7 +497,7 @@ int nouveau_fbcon_init(struct drm_device *dev)
 	nfbdev->helper.funcs = &nouveau_fbcon_helper_funcs;
 
 	ret = drm_fb_helper_init(dev, &nfbdev->helper,
-				 nv_two_heads(dev) ? 2 : 1, 4);
+				 dev->mode_config.num_crtc, 4);
 	if (ret) {
 		kfree(nfbdev);
 		return ret;
drivers/gpu/drm/radeon/radeon_gart.c +11 -2
index 62050f5..2a4c592 100644
@@ -289,8 +289,9 @@ int radeon_vm_manager_init(struct radeon_device *rdev)
 	rdev->vm_manager.enabled = false;
 
 	/* mark first vm as always in use, it's the system one */
+	/* allocate enough for 2 full VM pts */
 	r = radeon_sa_bo_manager_init(rdev, &rdev->vm_manager.sa_manager,
-				      rdev->vm_manager.max_pfn * 8,
+				      rdev->vm_manager.max_pfn * 8 * 2,
 				      RADEON_GEM_DOMAIN_VRAM);
 	if (r) {
 		dev_err(rdev->dev, "failed to allocate vm bo (%dKB)\n",
@@ -635,7 +636,15 @@ int radeon_vm_init(struct radeon_device *rdev, struct radeon_vm *vm)
 	mutex_init(&vm->mutex);
 	INIT_LIST_HEAD(&vm->list);
 	INIT_LIST_HEAD(&vm->va);
-	vm->last_pfn = 0;
+	/* SI requires equal sized PTs for all VMs, so always set
+	 * last_pfn to max_pfn.  cayman allows variable sized
+	 * pts so we can grow then as needed.  Once we switch
+	 * to two level pts we can unify this again.
+	 */
+	if (rdev->family >= CHIP_TAHITI)
+		vm->last_pfn = rdev->vm_manager.max_pfn;
+	else
+		vm->last_pfn = 0;
 	/* map the ib pool buffer at 0 in virtual address space, set
 	 * read only
 	 */
drivers/gpu/drm/radeon/si.c +2 -2
index 27bda98..2af1ce6 100644
@@ -2527,12 +2527,12 @@ int si_pcie_gart_enable(struct radeon_device *rdev)
 	WREG32(0x15DC, 0);
 
 	/* empty context1-15 */
-	/* FIXME start with 1G, once using 2 level pt switch to full
+	/* FIXME start with 4G, once using 2 level pt switch to full
 	 * vm size space
 	 */
 	/* set vm size, must be a multiple of 4 */
 	WREG32(VM_CONTEXT1_PAGE_TABLE_START_ADDR, 0);
-	WREG32(VM_CONTEXT1_PAGE_TABLE_END_ADDR, (1 << 30) / RADEON_GPU_PAGE_SIZE);
+	WREG32(VM_CONTEXT1_PAGE_TABLE_END_ADDR, rdev->vm_manager.max_pfn);
 	for (i = 1; i < 16; i++) {
 		if (i < 8)
 			WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR + (i << 2),
drivers/hid/hid-multitouch.c +46 -12

152 lines not on this page · raw message

drivers/hwmon/applesmc.c +2 -2
index f082e48..70d62f5 100644
@@ -215,7 +215,7 @@ static int read_smc(u8 cmd, const char *key, u8 *buffer, u8 len)
 	int i;
 
 	if (send_command(cmd) || send_argument(key)) {
-		pr_warn("%s: read arg fail\n", key);
+		pr_warn("%.4s: read arg fail\n", key);
 		return -EIO;
 	}
 
@@ -223,7 +223,7 @@ static int read_smc(u8 cmd, const char *key, u8 *buffer, u8 len)
 
 	for (i = 0; i < len; i++) {
 		if (__wait_status(0x05)) {
-			pr_warn("%s: read data fail\n", key);
+			pr_warn("%.4s: read data fail\n", key);
 			return -EIO;
 		}
 		buffer[i] = inb(APPLESMC_DATA_PORT);
drivers/hwmon/coretemp.c +2 -2
index b9d5123..0f52799 100644
@@ -664,7 +664,7 @@ static void __cpuinit get_core_online(unsigned int cpu)
 	 * sensors. We check this bit only, all the early CPUs
 	 * without thermal sensors will be filtered out.
 	 */
-	if (!cpu_has(c, X86_FEATURE_DTS))
+	if (!cpu_has(c, X86_FEATURE_DTHERM))
 		return;
 
 	if (!pdev) {
@@ -765,7 +765,7 @@ static struct notifier_block coretemp_cpu_notifier __refdata = {
 };
 
 static const struct x86_cpu_id coretemp_ids[] = {
-	{ X86_VENDOR_INTEL, X86_FAMILY_ANY, X86_MODEL_ANY, X86_FEATURE_DTS },
+	{ X86_VENDOR_INTEL, X86_FAMILY_ANY, X86_MODEL_ANY, X86_FEATURE_DTHERM },
 	{}
 };
 MODULE_DEVICE_TABLE(x86cpu, coretemp_ids);
drivers/hwspinlock/hwspinlock_core.c +2 -2
index 61c9cf1..1201a15 100644
@@ -345,7 +345,7 @@ int hwspin_lock_register(struct hwspinlock_device *bank, struct device *dev,
 		spin_lock_init(&hwlock->lock);
 		hwlock->bank = bank;
 
-		ret = hwspin_lock_register_single(hwlock, i);
+		ret = hwspin_lock_register_single(hwlock, base_id + i);
 		if (ret)
 			goto reg_failed;
 	}
@@ -354,7 +354,7 @@ int hwspin_lock_register(struct hwspinlock_device *bank, struct device *dev,
 
 reg_failed:
 	while (--i >= 0)
-		hwspin_lock_unregister_single(i);
+		hwspin_lock_unregister_single(base_id + i);
 	return ret;
 }
 EXPORT_SYMBOL_GPL(hwspin_lock_register);
drivers/iommu/amd_iommu.c +9 -0
index a2e418c..dfe7d37 100644
@@ -83,6 +83,8 @@ static struct iommu_ops amd_iommu_ops;
 static ATOMIC_NOTIFIER_HEAD(ppr_notifier);
 int amd_iommu_max_glx_val = -1;
 
+static struct dma_map_ops amd_iommu_dma_ops;
+
 /*
  * general struct to manage commands send to an IOMMU
  */
@@ -2267,6 +2269,13 @@ static int device_change_notifier(struct notifier_block *nb,
 		list_add_tail(&dma_domain->list, &iommu_pd_list);
 		spin_unlock_irqrestore(&iommu_pd_list_lock, flags);
 
+		dev_data = get_dev_data(dev);
+
+		if (!dev_data->passthrough)
+			dev->archdata.dma_ops = &amd_iommu_dma_ops;
+		else
+			dev->archdata.dma_ops = &nommu_dma_ops;
+
 		break;
 	case BUS_NOTIFY_DEL_DEVICE:
 
drivers/iommu/amd_iommu_init.c +2 -2
index 542024b..c04ddca 100644
@@ -1641,6 +1641,8 @@ static int __init amd_iommu_init(void)
 
 	amd_iommu_init_api();
 
+	x86_platform.iommu_shutdown = disable_iommus;
+
 	if (iommu_pass_through)
 		goto out;
 
@@ -1649,8 +1651,6 @@ static int __init amd_iommu_init(void)
 	else
 		printk(KERN_INFO "AMD-Vi: Lazy IO/TLB flushing enabled\n");
 
-	x86_platform.iommu_shutdown = disable_iommus;
-
 out:
 	return ret;
 
drivers/iommu/tegra-smmu.c +2 -2
index eb93c82..17ef6c4 100644
@@ -550,13 +550,13 @@ static int alloc_pdir(struct smmu_as *as)
 		return 0;
 
 	as->pte_count = devm_kzalloc(smmu->dev,
-		     sizeof(as->pte_count[0]) * SMMU_PDIR_COUNT, GFP_KERNEL);
+		     sizeof(as->pte_count[0]) * SMMU_PDIR_COUNT, GFP_ATOMIC);
 	if (!as->pte_count) {
 		dev_err(smmu->dev,
 			"failed to allocate smmu_device PTE cunters\n");
 		return -ENOMEM;
 	}
-	as->pdir_page = alloc_page(GFP_KERNEL | __GFP_DMA);
+	as->pdir_page = alloc_page(GFP_ATOMIC | __GFP_DMA);
 	if (!as->pdir_page) {
 		dev_err(smmu->dev,
 			"failed to allocate smmu_device page directory\n");
drivers/md/persistent-data/dm-space-map-checker.c +31 -23

137 lines not on this page · raw message

drivers/md/persistent-data/dm-space-map-disk.c +10 -1
index fc469ba..3d0ed53 100644
@@ -290,7 +290,16 @@ struct dm_space_map *dm_sm_disk_create(struct dm_transaction_manager *tm,
 				       dm_block_t nr_blocks)
 {
 	struct dm_space_map *sm = dm_sm_disk_create_real(tm, nr_blocks);
-	return dm_sm_checker_create_fresh(sm);
+	struct dm_space_map *smc;
+
+	if (IS_ERR_OR_NULL(sm))
+		return sm;
+
+	smc = dm_sm_checker_create_fresh(sm);
+	if (IS_ERR(smc))
+		dm_sm_destroy(sm);
+
+	return smc;
 }
 EXPORT_SYMBOL_GPL(dm_sm_disk_create);
 
drivers/md/persistent-data/dm-transaction-manager.c +9 -2
index 6f8d387..ba54aac 100644
@@ -138,6 +138,9 @@ EXPORT_SYMBOL_GPL(dm_tm_create_non_blocking_clone);
 
 void dm_tm_destroy(struct dm_transaction_manager *tm)
 {
+	if (!tm->is_clone)
+		wipe_shadow_table(tm);
+
 	kfree(tm);
 }
 EXPORT_SYMBOL_GPL(dm_tm_destroy);
@@ -342,8 +345,10 @@ static int dm_tm_create_internal(struct dm_block_manager *bm,
 		}
 
 		*sm = dm_sm_checker_create(inner);
-		if (!*sm)
+		if (IS_ERR(*sm)) {
+			r = PTR_ERR(*sm);
 			goto bad2;
+		}
 
 	} else {
 		r = dm_bm_write_lock(dm_tm_get_bm(*tm), sb_location,
@@ -362,8 +367,10 @@ static int dm_tm_create_internal(struct dm_block_manager *bm,
 		}
 
 		*sm = dm_sm_checker_create(inner);
-		if (!*sm)
+		if (IS_ERR(*sm)) {
+			r = PTR_ERR(*sm);
 			goto bad2;
+		}
 	}
 
 	return 0;
drivers/md/raid10.c +9 -3
index d037adb..a954c95 100644
@@ -2209,7 +2209,7 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10
 			if (r10_sync_page_io(rdev,
 					     r10_bio->devs[sl].addr +
 					     sect,
-					     s<<9, conf->tmppage, WRITE)
+					     s, conf->tmppage, WRITE)
 			    == 0) {
 				/* Well, this device is dead */
 				printk(KERN_NOTICE
@@ -2246,7 +2246,7 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10
 			switch (r10_sync_page_io(rdev,
 					     r10_bio->devs[sl].addr +
 					     sect,
-					     s<<9, conf->tmppage,
+					     s, conf->tmppage,
 						 READ)) {
 			case 0:
 				/* Well, this device is dead */
@@ -2407,7 +2407,7 @@ read_more:
 	slot = r10_bio->read_slot;
 	printk_ratelimited(
 		KERN_ERR
-		"md/raid10:%s: %s: redirecting"
+		"md/raid10:%s: %s: redirecting "
 		"sector %llu to another mirror\n",
 		mdname(mddev),
 		bdevname(rdev->bdev, b),
@@ -2772,6 +2772,12 @@ static sector_t sync_request(struct mddev *mddev, sector_t sector_nr,
 			/* want to reconstruct this device */
 			rb2 = r10_bio;
 			sect = raid10_find_virt(conf, sector_nr, i);
+			if (sect >= mddev->resync_max_sectors) {
+				/* last stripe is not complete - don't
+				 * try to recover this sector.
+				 */
+				continue;
+			}
 			/* Unless we are doing a full sync, or a replacement
 			 * we only need to recover the block if it is set in
 			 * the bitmap
drivers/md/raid5.c +12 -2
index f351422..73a5800 100644
@@ -196,12 +196,14 @@ static void __release_stripe(struct r5conf *conf, struct stripe_head *sh)
 		BUG_ON(!list_empty(&sh->lru));
 		BUG_ON(atomic_read(&conf->active_stripes)==0);
 		if (test_bit(STRIPE_HANDLE, &sh->state)) {
-			if (test_bit(STRIPE_DELAYED, &sh->state))
+			if (test_bit(STRIPE_DELAYED, &sh->state) &&
+			    !test_bit(STRIPE_PREREAD_ACTIVE, &sh->state))
 				list_add_tail(&sh->lru, &conf->delayed_list);
 			else if (test_bit(STRIPE_BIT_DELAY, &sh->state) &&
 				   sh->bm_seq - conf->seq_write > 0)
 				list_add_tail(&sh->lru, &conf->bitmap_list);
 			else {
+				clear_bit(STRIPE_DELAYED, &sh->state);
 				clear_bit(STRIPE_BIT_DELAY, &sh->state);
 				list_add_tail(&sh->lru, &conf->handle_list);
 			}
@@ -583,6 +585,12 @@ static void ops_run_io(struct stripe_head *sh, struct stripe_head_state *s)
 					 * a chance*/
 					md_check_recovery(conf->mddev);
 				}
+				/*
+				 * Because md_wait_for_blocked_rdev
+				 * will dec nr_pending, we must
+				 * increment it first.
+				 */
+				atomic_inc(&rdev->nr_pending);
 				md_wait_for_blocked_rdev(rdev, conf->mddev);
 			} else {
 				/* Acknowledged bad block - skip the write */
@@ -3842,7 +3850,6 @@ static int chunk_aligned_read(struct mddev *mddev, struct bio * raid_bio)
 		raid_bio->bi_next = (void*)rdev;
 		align_bi->bi_bdev =  rdev->bdev;
 		align_bi->bi_flags &= ~(1 << BIO_SEG_VALID);
-		align_bi->bi_sector += rdev->data_offset;
 
 		if (!bio_fits_rdev(align_bi) ||
 		    is_badblock(rdev, align_bi->bi_sector, align_bi->bi_size>>9,
@@ -3853,6 +3860,9 @@ static int chunk_aligned_read(struct mddev *mddev, struct bio * raid_bio)
 			return 0;
 		}
 
+		/* No reshape active, so we can trust rdev->data_offset */
+		align_bi->bi_sector += rdev->data_offset;
+
 		spin_lock_irq(&conf->device_lock);
 		wait_event_lock_irq(conf->wait_for_stripe,
 				    conf->quiesce == 0,
drivers/media/dvb/siano/smsusb.c +2 -0
index 63c004a..664e460 100644
@@ -544,6 +544,8 @@ static const struct usb_device_id smsusb_id_table[] __devinitconst = {
 		.driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
 	{ USB_DEVICE(0x2040, 0xc0a0),
 		.driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
+	{ USB_DEVICE(0x2040, 0xf5a0),
+		.driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
 	{ } /* Terminating entry */
 	};
 
drivers/media/video/gspca/gspca.c +3 -1
index ca5a2b1..4dc8852 100644
@@ -1723,7 +1723,7 @@ static int vidioc_streamoff(struct file *file, void *priv,
 				enum v4l2_buf_type buf_type)
 {
 	struct gspca_dev *gspca_dev = priv;
-	int ret;
+	int i, ret;
 
 	if (buf_type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
 		return -EINVAL;
@@ -1754,6 +1754,8 @@ static int vidioc_streamoff(struct file *file, void *priv,
 	wake_up_interruptible(&gspca_dev->wq);
 
 	/* empty the transfer queues */
+	for (i = 0; i < gspca_dev->nframes; i++)
+		gspca_dev->frame[i].v4l2_buf.flags &= ~BUF_ALL_FLAGS;
 	atomic_set(&gspca_dev->fr_q, 0);
 	atomic_set(&gspca_dev->fr_i, 0);
 	gspca_dev->fr_o = 0;
drivers/mtd/nand/cafe_nand.c +1 -1
index 2a96e1a..6d22755 100644
@@ -102,7 +102,7 @@ static const char *part_probes[] = { "cmdlinepart", "RedBoot", NULL };
 static int cafe_device_ready(struct mtd_info *mtd)
 {
 	struct cafe_priv *cafe = mtd->priv;
-	int result = !!(cafe_readl(cafe, NAND_STATUS) | 0x40000000);
+	int result = !!(cafe_readl(cafe, NAND_STATUS) & 0x40000000);
 	uint32_t irqs = cafe_readl(cafe, NAND_IRQ);
 
 	cafe_writel(cafe, irqs, NAND_IRQ);
drivers/net/bonding/bond_main.c +5 -4
index bc13b3d..a579a2f 100644
@@ -76,6 +76,7 @@
 #include <net/route.h>
 #include <net/net_namespace.h>
 #include <net/netns/generic.h>
+#include <net/pkt_sched.h>
 #include "bonding.h"
 #include "bond_3ad.h"
 #include "bond_alb.h"
@@ -381,8 +382,6 @@ struct vlan_entry *bond_next_vlan(struct bonding *bond, struct vlan_entry *curr)
 	return next;
 }
 
-#define bond_queue_mapping(skb) (*(u16 *)((skb)->cb))
-
 /**
  * bond_dev_queue_xmit - Prepare skb for xmit.
  *
@@ -395,7 +394,9 @@ int bond_dev_queue_xmit(struct bonding *bond, struct sk_buff *skb,
 {
 	skb->dev = slave_dev;
 
-	skb->queue_mapping = bond_queue_mapping(skb);
+	BUILD_BUG_ON(sizeof(skb->queue_mapping) !=
+		     sizeof(qdisc_skb_cb(skb)->bond_queue_mapping));
+	skb->queue_mapping = qdisc_skb_cb(skb)->bond_queue_mapping;
 
 	if (unlikely(netpoll_tx_running(slave_dev)))
 		bond_netpoll_send_skb(bond_get_slave_by_dev(bond, slave_dev), skb);
@@ -4162,7 +4163,7 @@ static u16 bond_select_queue(struct net_device *dev, struct sk_buff *skb)
 	/*
 	 * Save the original txq to restore before passing to the driver
 	 */
-	bond_queue_mapping(skb) = skb->queue_mapping;
+	qdisc_skb_cb(skb)->bond_queue_mapping = skb->queue_mapping;
 
 	if (unlikely(txq >= dev->real_num_tx_queues)) {
 		do {
drivers/net/can/c_can/c_can.c +2 -2
index 8dc84d6..86cd532 100644
@@ -590,8 +590,8 @@ static void c_can_chip_config(struct net_device *dev)
 	priv->write_reg(priv, &priv->regs->control,
 			CONTROL_ENABLE_AR);
 
-	if (priv->can.ctrlmode & (CAN_CTRLMODE_LISTENONLY &
-					CAN_CTRLMODE_LOOPBACK)) {
+	if ((priv->can.ctrlmode & CAN_CTRLMODE_LISTENONLY) &&
+	    (priv->can.ctrlmode & CAN_CTRLMODE_LOOPBACK)) {
 		/* loopback + silent mode : useful for hot self-test */
 		priv->write_reg(priv, &priv->regs->control, CONTROL_EIE |
 				CONTROL_SIE | CONTROL_IE | CONTROL_TEST);
drivers/net/can/flexcan.c +2 -2
index 1efb083..00baa7e 100644
@@ -933,12 +933,12 @@ static int __devinit flexcan_probe(struct platform_device *pdev)
 	u32 clock_freq = 0;
 
 	if (pdev->dev.of_node) {
-		const u32 *clock_freq_p;
+		const __be32 *clock_freq_p;
 
 		clock_freq_p = of_get_property(pdev->dev.of_node,
 						"clock-frequency", NULL);
 		if (clock_freq_p)
-			clock_freq = *clock_freq_p;
+			clock_freq = be32_to_cpup(clock_freq_p);
 	}
 
 	if (!clock_freq) {
drivers/net/dummy.c +3 -1
index 442d91a..bab0158 100644
@@ -187,8 +187,10 @@ static int __init dummy_init_module(void)
 	rtnl_lock();
 	err = __rtnl_link_register(&dummy_link_ops);
 
-	for (i = 0; i < numdummies && !err; i++)
+	for (i = 0; i < numdummies && !err; i++) {
 		err = dummy_init_one();
+		cond_resched();
+	}
 	if (err < 0)
 		__rtnl_link_unregister(&dummy_link_ops);
 	rtnl_unlock();
drivers/net/ethernet/broadcom/bnx2x/bnx2x.h +0 -15
index 2c9ee55..75d35ec 100644
@@ -744,21 +744,6 @@ struct bnx2x_fastpath {
 
 #define ETH_RX_ERROR_FALGS		ETH_FAST_PATH_RX_CQE_PHY_DECODE_ERR_FLG
 
-#define BNX2X_IP_CSUM_ERR(cqe) \
-			(!((cqe)->fast_path_cqe.status_flags & \
-			   ETH_FAST_PATH_RX_CQE_IP_XSUM_NO_VALIDATION_FLG) && \
-			 ((cqe)->fast_path_cqe.type_error_flags & \
-			  ETH_FAST_PATH_RX_CQE_IP_BAD_XSUM_FLG))
-
-#define BNX2X_L4_CSUM_ERR(cqe) \
-			(!((cqe)->fast_path_cqe.status_flags & \
-			   ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG) && \
-			 ((cqe)->fast_path_cqe.type_error_flags & \
-			  ETH_FAST_PATH_RX_CQE_L4_BAD_XSUM_FLG))
-
-#define BNX2X_RX_CSUM_OK(cqe) \
-			(!(BNX2X_L4_CSUM_ERR(cqe) || BNX2X_IP_CSUM_ERR(cqe)))
-
 #define BNX2X_PRS_FLAG_OVERETH_IPV4(flags) \
 				(((le16_to_cpu(flags) & \
 				   PARSING_FLAGS_OVER_ETHERNET_PROTOCOL) >> \
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c +24 -11
index 4b05481..41bb34f 100644
@@ -191,7 +191,7 @@ int bnx2x_tx_int(struct bnx2x *bp, struct bnx2x_fp_txdata *txdata)
 
 		if ((netif_tx_queue_stopped(txq)) &&
 		    (bp->state == BNX2X_STATE_OPEN) &&
-		    (bnx2x_tx_avail(bp, txdata) >= MAX_SKB_FRAGS + 3))
+		    (bnx2x_tx_avail(bp, txdata) >= MAX_SKB_FRAGS + 4))
 			netif_tx_wake_queue(txq);
 
 		__netif_tx_unlock(txq);
@@ -568,6 +568,25 @@ drop:
 	fp->eth_q_stats.rx_skb_alloc_failed++;
 }
 
+static void bnx2x_csum_validate(struct sk_buff *skb, union eth_rx_cqe *cqe,
+				struct bnx2x_fastpath *fp)
+{
+	/* Do nothing if no IP/L4 csum validation was done */
+
+	if (cqe->fast_path_cqe.status_flags &
+	    (ETH_FAST_PATH_RX_CQE_IP_XSUM_NO_VALIDATION_FLG |
+	     ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG))
+		return;
+
+	/* If both IP/L4 validation were done, check if an error was found. */
+
+	if (cqe->fast_path_cqe.type_error_flags &
+	    (ETH_FAST_PATH_RX_CQE_IP_BAD_XSUM_FLG |
+	     ETH_FAST_PATH_RX_CQE_L4_BAD_XSUM_FLG))
+		fp->eth_q_stats.hw_csum_err++;
+	else
+		skb->ip_summed = CHECKSUM_UNNECESSARY;
+}
 
 int bnx2x_rx_int(struct bnx2x_fastpath *fp, int budget)
 {
@@ -757,13 +776,9 @@ reuse_rx:
 
 		skb_checksum_none_assert(skb);
 
-		if (bp->dev->features & NETIF_F_RXCSUM) {
+		if (bp->dev->features & NETIF_F_RXCSUM)
+			bnx2x_csum_validate(skb, cqe, fp);
 
-			if (likely(BNX2X_RX_CSUM_OK(cqe)))
-				skb->ip_summed = CHECKSUM_UNNECESSARY;
-			else
-				fp->eth_q_stats.hw_csum_err++;
-		}
 
 		skb_record_rx_queue(skb, fp->rx_queue);
 
@@ -2334,8 +2349,6 @@ int bnx2x_poll(struct napi_struct *napi, int budget)
 /* we split the first BD into headers and data BDs
  * to ease the pain of our fellow microcode engineers
  * we use one mapping for both BDs
- * So far this has only been observed to happen
- * in Other Operating Systems(TM)
  */
 static noinline u16 bnx2x_tx_split(struct bnx2x *bp,
 				   struct bnx2x_fp_txdata *txdata,
@@ -2987,7 +3000,7 @@ netdev_tx_t bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev)
 
 	txdata->tx_bd_prod += nbd;
 
-	if (unlikely(bnx2x_tx_avail(bp, txdata) < MAX_SKB_FRAGS + 3)) {
+	if (unlikely(bnx2x_tx_avail(bp, txdata) < MAX_SKB_FRAGS + 4)) {
 		netif_tx_stop_queue(txq);
 
 		/* paired memory barrier is in bnx2x_tx_int(), we have to keep
@@ -2996,7 +3009,7 @@ netdev_tx_t bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev)
 		smp_mb();
 
 		fp->eth_q_stats.driver_xoff++;
-		if (bnx2x_tx_avail(bp, txdata) >= MAX_SKB_FRAGS + 3)
+		if (bnx2x_tx_avail(bp, txdata) >= MAX_SKB_FRAGS + 4)
 			netif_tx_wake_queue(txq);
 	}
 	txdata->tx_pkt++;
drivers/net/ethernet/broadcom/tg3.c +2 -1
index ceeab8e..1a1b29f 100644
@@ -14248,7 +14248,8 @@ static int __devinit tg3_get_invariants(struct tg3 *tp)
 		}
 	}
 
-	if (tg3_flag(tp, 5755_PLUS))
+	if (tg3_flag(tp, 5755_PLUS) ||
+	    GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5906)
 		tg3_flag_set(tp, SHORT_DMA_BUG);
 
 	if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719)
drivers/net/ethernet/emulex/benet/be_main.c +3 -2
index 528a886..1bbf6b3 100644
@@ -731,6 +731,8 @@ static netdev_tx_t be_xmit(struct sk_buff *skb,
 
 	copied = make_tx_wrbs(adapter, txq, skb, wrb_cnt, dummy_wrb);
 	if (copied) {
+		int gso_segs = skb_shinfo(skb)->gso_segs;
+
 		/* record the sent skb in the sent_skb table */
 		BUG_ON(txo->sent_skb_list[start]);
 		txo->sent_skb_list[start] = skb;
@@ -748,8 +750,7 @@ static netdev_tx_t be_xmit(struct sk_buff *skb,
 
 		be_txq_notify(adapter, txq->id, wrb_cnt);
 
-		be_tx_stats_update(txo, wrb_cnt, copied,
-				skb_shinfo(skb)->gso_segs, stopped);
+		be_tx_stats_update(txo, wrb_cnt, copied, gso_segs, stopped);
 	} else {
 		txq->head = start;
 		dev_kfree_skb_any(skb);
drivers/net/ethernet/intel/e1000e/defines.h +1 -0
index 3a50259..eb84fe7 100644
@@ -101,6 +101,7 @@
 #define E1000_RXD_ERR_SEQ       0x04    /* Sequence Error */
 #define E1000_RXD_ERR_CXE       0x10    /* Carrier Extension Error */
 #define E1000_RXD_ERR_TCPE      0x20    /* TCP/UDP Checksum Error */
+#define E1000_RXD_ERR_IPE       0x40    /* IP Checksum Error */
 #define E1000_RXD_ERR_RXE       0x80    /* Rx Data Error */
 #define E1000_RXD_SPC_VLAN_MASK 0x0FFF  /* VLAN ID is in lower 12 bits */
 
drivers/net/ethernet/intel/e1000e/ethtool.c +4 -2
index db35dd5..e48f2d2 100644
@@ -258,7 +258,8 @@ static int e1000_set_settings(struct net_device *netdev,
 	 * When SoL/IDER sessions are active, autoneg/speed/duplex
 	 * cannot be changed
 	 */
-	if (hw->phy.ops.check_reset_block(hw)) {
+	if (hw->phy.ops.check_reset_block &&
+	    hw->phy.ops.check_reset_block(hw)) {
 		e_err("Cannot change link characteristics when SoL/IDER is "
 		      "active.\n");
 		return -EINVAL;
@@ -1604,7 +1605,8 @@ static int e1000_loopback_test(struct e1000_adapter *adapter, u64 *data)
 	 * PHY loopback cannot be performed if SoL/IDER
 	 * sessions are active
 	 */
-	if (hw->phy.ops.check_reset_block(hw)) {
+	if (hw->phy.ops.check_reset_block &&
+	    hw->phy.ops.check_reset_block(hw)) {
 		e_err("Cannot do PHY loopback test when SoL/IDER is active.\n");
 		*data = 0;
 		goto out;
drivers/net/ethernet/intel/e1000e/mac.c +1 -1
index decad98..efecb50 100644
@@ -709,7 +709,7 @@ s32 e1000e_setup_link_generic(struct e1000_hw *hw)
 	 * In the case of the phy reset being blocked, we already have a link.
 	 * We do not need to set it up again.
 	 */
-	if (hw->phy.ops.check_reset_block(hw))
+	if (hw->phy.ops.check_reset_block && hw->phy.ops.check_reset_block(hw))
 		return 0;
 
 	/*
drivers/net/ethernet/intel/e1000e/netdev.c +16 -63

147 lines not on this page · raw message

drivers/net/ethernet/intel/e1000e/phy.c +5 -3
index 35b4557..c4befb3 100644
@@ -2121,9 +2121,11 @@ s32 e1000e_phy_hw_reset_generic(struct e1000_hw *hw)
 	s32 ret_val;
 	u32 ctrl;
 
-	ret_val = phy->ops.check_reset_block(hw);
-	if (ret_val)
-		return 0;
+	if (phy->ops.check_reset_block) {
+		ret_val = phy->ops.check_reset_block(hw);
+		if (ret_val)
+			return 0;
+	}
 
 	ret_val = phy->ops.acquire(hw);
 	if (ret_val)
drivers/net/ethernet/intel/igbvf/ethtool.c +18 -11
index 8ce6706..90eef07 100644
@@ -357,21 +357,28 @@ static int igbvf_set_coalesce(struct net_device *netdev,
 	struct igbvf_adapter *adapter = netdev_priv(netdev);
 	struct e1000_hw *hw = &adapter->hw;
 
-	if ((ec->rx_coalesce_usecs > IGBVF_MAX_ITR_USECS) ||
-	    ((ec->rx_coalesce_usecs > 3) &&
-	     (ec->rx_coalesce_usecs < IGBVF_MIN_ITR_USECS)) ||
-	    (ec->rx_coalesce_usecs == 2))
-		return -EINVAL;
-
-	/* convert to rate of irq's per second */
-	if (ec->rx_coalesce_usecs && ec->rx_coalesce_usecs <= 3) {
+	if ((ec->rx_coalesce_usecs >= IGBVF_MIN_ITR_USECS) &&
+	     (ec->rx_coalesce_usecs <= IGBVF_MAX_ITR_USECS)) {
+		adapter->current_itr = ec->rx_coalesce_usecs << 2;
+		adapter->requested_itr = 1000000000 /
+					(adapter->current_itr * 256);
+	} else if ((ec->rx_coalesce_usecs == 3) ||
+		   (ec->rx_coalesce_usecs == 2)) {
 		adapter->current_itr = IGBVF_START_ITR;
 		adapter->requested_itr = ec->rx_coalesce_usecs;
-	} else {
-		adapter->current_itr = ec->rx_coalesce_usecs << 2;
+	} else if (ec->rx_coalesce_usecs == 0) {
+		/*
+		 * The user's desire is to turn off interrupt throttling
+		 * altogether, but due to HW limitations, we can't do that.
+		 * Instead we set a very small value in EITR, which would
+		 * allow ~967k interrupts per second, but allow the adapter's
+		 * internal clocking to still function properly.
+		 */
+		adapter->current_itr = 4;
 		adapter->requested_itr = 1000000000 /
 					(adapter->current_itr * 256);
-	}
+	} else
+		return -EINVAL;
 
 	writel(adapter->current_itr,
 	       hw->hw_addr + adapter->rx_ring->itr_register);
drivers/net/ethernet/intel/ixgbe/ixgbe.h +2 -2
index 81b1555..f8f85ec 100644
@@ -189,7 +189,7 @@ enum ixgbe_ring_state_t {
 	__IXGBE_HANG_CHECK_ARMED,
 	__IXGBE_RX_RSC_ENABLED,
 	__IXGBE_RX_CSUM_UDP_ZERO_ERR,
-	__IXGBE_RX_FCOE_BUFSZ,
+	__IXGBE_RX_FCOE,
 };
 
 #define check_for_tx_hang(ring) \
@@ -283,7 +283,7 @@ struct ixgbe_ring_feature {
 #if defined(IXGBE_FCOE) && (PAGE_SIZE < 8192)
 static inline unsigned int ixgbe_rx_pg_order(struct ixgbe_ring *ring)
 {
-	return test_bit(__IXGBE_RX_FCOE_BUFSZ, &ring->state) ? 1 : 0;
+	return test_bit(__IXGBE_RX_FCOE, &ring->state) ? 1 : 0;
 }
 #else
 #define ixgbe_rx_pg_order(_ring) 0
drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c +1 -1
index ed1b47d..a269d11 100644
@@ -628,7 +628,7 @@ static int ixgbe_alloc_q_vector(struct ixgbe_adapter *adapter, int v_idx,
 			f = &adapter->ring_feature[RING_F_FCOE];
 			if ((rxr_idx >= f->mask) &&
 			    (rxr_idx < f->mask + f->indices))
-				set_bit(__IXGBE_RX_FCOE_BUFSZ, &ring->state);
+				set_bit(__IXGBE_RX_FCOE, &ring->state);
 		}
 
 #endif /* IXGBE_FCOE */
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +10 -4
index 467948e..a66c215 100644
@@ -1036,17 +1036,17 @@ static inline void ixgbe_rx_hash(struct ixgbe_ring *ring,
 #ifdef IXGBE_FCOE
 /**
  * ixgbe_rx_is_fcoe - check the rx desc for incoming pkt type
- * @adapter: address of board private structure
+ * @ring: structure containing ring specific data
  * @rx_desc: advanced rx descriptor
  *
  * Returns : true if it is FCoE pkt
  */
-static inline bool ixgbe_rx_is_fcoe(struct ixgbe_adapter *adapter,
+static inline bool ixgbe_rx_is_fcoe(struct ixgbe_ring *ring,
 				    union ixgbe_adv_rx_desc *rx_desc)
 {
 	__le16 pkt_info = rx_desc->wb.lower.lo_dword.hs_rss.pkt_info;
 
-	return (adapter->flags & IXGBE_FLAG_FCOE_ENABLED) &&
+	return test_bit(__IXGBE_RX_FCOE, &ring->state) &&
 	       ((pkt_info & cpu_to_le16(IXGBE_RXDADV_PKTTYPE_ETQF_MASK)) ==
 		(cpu_to_le16(IXGBE_ETQF_FILTER_FCOE <<
 			     IXGBE_RXDADV_PKTTYPE_ETQF_SHIFT)));
@@ -1519,6 +1519,12 @@ static bool ixgbe_cleanup_headers(struct ixgbe_ring *rx_ring,
 		skb->truesize -= ixgbe_rx_bufsz(rx_ring);
 	}
 
+#ifdef IXGBE_FCOE
+	/* do not attempt to pad FCoE Frames as this will disrupt DDP */
+	if (ixgbe_rx_is_fcoe(rx_ring, rx_desc))
+		return false;
+
+#endif
 	/* if skb_pad returns an error the skb was freed */
 	if (unlikely(skb->len < 60)) {
 		int pad_len = 60 - skb->len;
@@ -1745,7 +1751,7 @@ static bool ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector,
 
 #ifdef IXGBE_FCOE
 		/* if ddp, not passing to ULD unless for FCP_RSP or error */
-		if (ixgbe_rx_is_fcoe(adapter, rx_desc)) {
+		if (ixgbe_rx_is_fcoe(rx_ring, rx_desc)) {
 			ddp_bytes = ixgbe_fcoe_ddp(adapter, rx_desc, skb);
 			if (!ddp_bytes) {
 				dev_kfree_skb_any(skb);
drivers/net/ethernet/marvell/sky2.c +6 -4
index 487a6c8..589753f 100644
@@ -4381,10 +4381,12 @@ static int sky2_set_features(struct net_device *dev, netdev_features_t features)
 	struct sky2_port *sky2 = netdev_priv(dev);
 	netdev_features_t changed = dev->features ^ features;
 
-	if (changed & NETIF_F_RXCSUM) {
-		bool on = features & NETIF_F_RXCSUM;
-		sky2_write32(sky2->hw, Q_ADDR(rxqaddr[sky2->port], Q_CSR),
-			     on ? BMU_ENA_RX_CHKSUM : BMU_DIS_RX_CHKSUM);
+	if ((changed & NETIF_F_RXCSUM) &&
+	    !(sky2->hw->flags & SKY2_HW_NEW_LE)) {
+		sky2_write32(sky2->hw,
+			     Q_ADDR(rxqaddr[sky2->port], Q_CSR),
+			     (features & NETIF_F_RXCSUM)
+			     ? BMU_ENA_RX_CHKSUM : BMU_DIS_RX_CHKSUM);
 	}
 
 	if (changed & NETIF_F_RXHASH)
drivers/net/ethernet/nxp/lpc_eth.c +6 -5
index 6dfc26d..0c5edc1 100644
@@ -936,16 +936,16 @@ static void __lpc_handle_xmit(struct net_device *ndev)
 			/* Update stats */
 			ndev->stats.tx_packets++;
 			ndev->stats.tx_bytes += skb->len;
-
-			/* Free buffer */
-			dev_kfree_skb_irq(skb);
 		}
+		dev_kfree_skb_irq(skb);
 
 		txcidx = readl(LPC_ENET_TXCONSUMEINDEX(pldat->net_base));
 	}
 
-	if (netif_queue_stopped(ndev))
-		netif_wake_queue(ndev);
+	if (pldat->num_used_tx_buffs <= ENET_TX_DESC/2) {
+		if (netif_queue_stopped(ndev))
+			netif_wake_queue(ndev);
+	}
 }
 
 static int __lpc_handle_recv(struct net_device *ndev, int budget)
@@ -1310,6 +1310,7 @@ static const struct net_device_ops lpc_netdev_ops = {
 	.ndo_set_rx_mode	= lpc_eth_set_multicast_list,
 	.ndo_do_ioctl		= lpc_eth_ioctl,
 	.ndo_set_mac_address	= lpc_set_mac_address,
+	.ndo_change_mtu		= eth_change_mtu,
 };
 
 static int lpc_eth_drv_probe(struct platform_device *pdev)
drivers/net/ethernet/realtek/r8169.c +3 -0
index ce6b44d..161e045 100644
@@ -5966,6 +5966,8 @@ static void __devexit rtl_remove_one(struct pci_dev *pdev)
 
 	cancel_work_sync(&tp->wk.work);
 
+	netif_napi_del(&tp->napi);
+
 	unregister_netdev(dev);
 
 	rtl_release_firmware(tp);
@@ -6288,6 +6290,7 @@ out:
 	return rc;
 
 err_out_msi_4:
+	netif_napi_del(&tp->napi);
 	rtl_disable_msi(pdev, tp);
 	iounmap(ioaddr);
 err_out_free_res_3:
drivers/net/ethernet/sun/niu.c +1 -11
index c99b3b0..8489d09 100644
@@ -3598,7 +3598,6 @@ static int release_tx_packet(struct niu *np, struct tx_ring_info *rp, int idx)
 static void niu_tx_work(struct niu *np, struct tx_ring_info *rp)
 {
 	struct netdev_queue *txq;
-	unsigned int tx_bytes;
 	u16 pkt_cnt, tmp;
 	int cons, index;
 	u64 cs;
@@ -3621,18 +3620,12 @@ static void niu_tx_work(struct niu *np, struct tx_ring_info *rp)
 	netif_printk(np, tx_done, KERN_DEBUG, np->dev,
 		     "%s() pkt_cnt[%u] cons[%d]\n", __func__, pkt_cnt, cons);
 
-	tx_bytes = 0;
-	tmp = pkt_cnt;
-	while (tmp--) {
-		tx_bytes += rp->tx_buffs[cons].skb->len;
+	while (pkt_cnt--)
 		cons = release_tx_packet(np, rp, cons);
-	}
 
 	rp->cons = cons;
 	smp_mb();
 
-	netdev_tx_completed_queue(txq, pkt_cnt, tx_bytes);
-
 out:
 	if (unlikely(netif_tx_queue_stopped(txq) &&
 		     (niu_tx_avail(rp) > NIU_TX_WAKEUP_THRESH(rp)))) {
@@ -4333,7 +4326,6 @@ static void niu_free_channels(struct niu *np)
 			struct tx_ring_info *rp = &np->tx_rings[i];
 
 			niu_free_tx_ring_info(np, rp);
-			netdev_tx_reset_queue(netdev_get_tx_queue(np->dev, i));
 		}
 		kfree(np->tx_rings);
 		np->tx_rings = NULL;
@@ -6739,8 +6731,6 @@ static netdev_tx_t niu_start_xmit(struct sk_buff *skb,
 		prod = NEXT_TX(rp, prod);
 	}
 
-	netdev_tx_sent_queue(txq, skb->len);
-
 	if (prod < rp->prod)
 		rp->wrap_bit ^= TX_RING_KICK_WRAP;
 	rp->prod = prod;
drivers/net/macvtap.c +21 -4
index cb8fd50..c1d602d 100644
@@ -528,9 +528,10 @@ static int zerocopy_sg_from_iovec(struct sk_buff *skb, const struct iovec *from,
 		}
 		base = (unsigned long)from->iov_base + offset1;
 		size = ((base & ~PAGE_MASK) + len + ~PAGE_MASK) >> PAGE_SHIFT;
+		if (i + size > MAX_SKB_FRAGS)
+			return -EMSGSIZE;
 		num_pages = get_user_pages_fast(base, size, 0, &page[i]);
-		if ((num_pages != size) ||
-		    (num_pages > MAX_SKB_FRAGS - skb_shinfo(skb)->nr_frags))
+		if (num_pages != size)
 			/* put_page is in skb free */
 			return -EFAULT;
 		skb->data_len += len;
@@ -647,7 +648,7 @@ static ssize_t macvtap_get_user(struct macvtap_queue *q, struct msghdr *m,
 	int err;
 	struct virtio_net_hdr vnet_hdr = { 0 };
 	int vnet_hdr_len = 0;
-	int copylen;
+	int copylen = 0;
 	bool zerocopy = false;
 
 	if (q->flags & IFF_VNET_HDR) {
@@ -676,15 +677,31 @@ static ssize_t macvtap_get_user(struct macvtap_queue *q, struct msghdr *m,
 	if (unlikely(len < ETH_HLEN))
 		goto err;
 
+	err = -EMSGSIZE;
+	if (unlikely(count > UIO_MAXIOV))
+		goto err;
+
 	if (m && m->msg_control && sock_flag(&q->sk, SOCK_ZEROCOPY))
 		zerocopy = true;
 
 	if (zerocopy) {
+		/* Userspace may produce vectors with count greater than
+		 * MAX_SKB_FRAGS, so we need to linearize parts of the skb
+		 * to let the rest of data to be fit in the frags.
+		 */
+		if (count > MAX_SKB_FRAGS) {
+			copylen = iov_length(iv, count - MAX_SKB_FRAGS);
+			if (copylen < vnet_hdr_len)
+				copylen = 0;
+			else
+				copylen -= vnet_hdr_len;
+		}
 		/* There are 256 bytes to be copied in skb, so there is enough
 		 * room for skb expand head in case it is used.
 		 * The rest buffer is mapped from userspace.
 		 */
-		copylen = vnet_hdr.hdr_len;
+		if (copylen < vnet_hdr.hdr_len)
+			copylen = vnet_hdr.hdr_len;
 		if (!copylen)
 			copylen = GOODCOPY_LEN;
 	} else
drivers/net/usb/ipheth.c +5 -0
index dd78c4c..5cba415 100644
@@ -59,6 +59,7 @@
 #define USB_PRODUCT_IPHONE_3G   0x1292
 #define USB_PRODUCT_IPHONE_3GS  0x1294
 #define USB_PRODUCT_IPHONE_4	0x1297
+#define USB_PRODUCT_IPAD 0x129a
 #define USB_PRODUCT_IPHONE_4_VZW 0x129c
 #define USB_PRODUCT_IPHONE_4S	0x12a0
 
@@ -101,6 +102,10 @@ static struct usb_device_id ipheth_table[] = {
 		IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
 		IPHETH_USBINTF_PROTO) },
 	{ USB_DEVICE_AND_INTERFACE_INFO(
+		USB_VENDOR_APPLE, USB_PRODUCT_IPAD,
+		IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
+		IPHETH_USBINTF_PROTO) },
+	{ USB_DEVICE_AND_INTERFACE_INFO(
 		USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_4_VZW,
 		IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
 		IPHETH_USBINTF_PROTO) },
drivers/net/usb/qmi_wwan.c +64 -45

160 lines not on this page · raw message

drivers/net/wireless/ath/ath.h +1 -0
index c54b7d37..420d69b 100644
@@ -143,6 +143,7 @@ struct ath_common {
 	u32 keymax;
 	DECLARE_BITMAP(keymap, ATH_KEYMAX);
 	DECLARE_BITMAP(tkip_keymap, ATH_KEYMAX);
+	DECLARE_BITMAP(ccmp_keymap, ATH_KEYMAX);
 	enum ath_crypt_caps crypt_caps;
 
 	unsigned int clockrate;
drivers/net/wireless/ath/ath9k/ath9k.h +1 -0
index 8c84049..4bfb44a 100644
@@ -213,6 +213,7 @@ struct ath_frame_info {
 	enum ath9k_key_type keytype;
 	u8 keyix;
 	u8 retries;
+	u8 rtscts_rate;
 };
 
 struct ath_buf_state {
drivers/net/wireless/ath/ath9k/htc_drv_main.c +2 -3
index 2b8f61c..abbd6ef 100644
@@ -1496,6 +1496,7 @@ static void ath9k_htc_bss_info_changed(struct ieee80211_hw *hw,
 			priv->num_sta_assoc_vif++ : priv->num_sta_assoc_vif--;
 
 		if (priv->ah->opmode == NL80211_IFTYPE_STATION) {
+			ath9k_htc_choose_set_bssid(priv);
 			if (bss_conf->assoc && (priv->num_sta_assoc_vif == 1))
 				ath9k_htc_start_ani(priv);
 			else if (priv->num_sta_assoc_vif == 0)
@@ -1503,13 +1504,11 @@ static void ath9k_htc_bss_info_changed(struct ieee80211_hw *hw,
 		}
 	}
 
-	if (changed & BSS_CHANGED_BSSID) {
+	if (changed & BSS_CHANGED_IBSS) {
 		if (priv->ah->opmode == NL80211_IFTYPE_ADHOC) {
 			common->curaid = bss_conf->aid;
 			memcpy(common->curbssid, bss_conf->bssid, ETH_ALEN);
 			ath9k_htc_set_bssid(priv);
-		} else if (priv->ah->opmode == NL80211_IFTYPE_STATION) {
-			ath9k_htc_choose_set_bssid(priv);
 		}
 	}
 
drivers/net/wireless/ath/ath9k/hw.c +14 -2
index fa84e37..6dfd964 100644
@@ -558,7 +558,7 @@ static int __ath9k_hw_init(struct ath_hw *ah)
 
 	if (NR_CPUS > 1 && ah->config.serialize_regmode == SER_REG_MODE_AUTO) {
 		if (ah->hw_version.macVersion == AR_SREV_VERSION_5416_PCI ||
-		    ((AR_SREV_9160(ah) || AR_SREV_9280(ah)) &&
+		    ((AR_SREV_9160(ah) || AR_SREV_9280(ah) || AR_SREV_9287(ah)) &&
 		     !ah->is_pciexpress)) {
 			ah->config.serialize_regmode =
 				SER_REG_MODE_ON;
@@ -720,13 +720,25 @@ static void ath9k_hw_init_qos(struct ath_hw *ah)
 
 u32 ar9003_get_pll_sqsum_dvc(struct ath_hw *ah)
 {
+	struct ath_common *common = ath9k_hw_common(ah);
+	int i = 0;
+
 	REG_CLR_BIT(ah, PLL3, PLL3_DO_MEAS_MASK);
 	udelay(100);
 	REG_SET_BIT(ah, PLL3, PLL3_DO_MEAS_MASK);
 
-	while ((REG_READ(ah, PLL4) & PLL4_MEAS_DONE) == 0)
+	while ((REG_READ(ah, PLL4) & PLL4_MEAS_DONE) == 0) {
+
 		udelay(100);
 
+		if (WARN_ON_ONCE(i >= 100)) {
+			ath_err(common, "PLL4 meaurement not done\n");
+			break;
+		}
+
+		i++;
+	}
+
 	return (REG_READ(ah, PLL3) & SQSUM_DVC_MASK) >> 3;
 }
 EXPORT_SYMBOL(ar9003_get_pll_sqsum_dvc);
drivers/net/wireless/ath/ath9k/main.c +9 -9
index 798ea57..d5dabcb 100644
@@ -960,6 +960,15 @@ void ath_hw_pll_work(struct work_struct *work)
 					    hw_pll_work.work);
 	u32 pll_sqsum;
 
+	/*
+	 * ensure that the PLL WAR is executed only
+	 * after the STA is associated (or) if the
+	 * beaconing had started in interfaces that
+	 * uses beacons.
+	 */
+	if (!(sc->sc_flags & SC_OP_BEACONS))
+		return;
+
 	if (AR_SREV_9485(sc->sc_ah)) {
 
 		ath9k_ps_wakeup(sc);
@@ -1419,15 +1428,6 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,
 		}
 	}
 
-	if ((ah->opmode == NL80211_IFTYPE_ADHOC) ||
-	    ((vif->type == NL80211_IFTYPE_ADHOC) &&
-	     sc->nvifs > 0)) {
-		ath_err(common, "Cannot create ADHOC interface when other"
-			" interfaces already exist.\n");
-		ret = -EINVAL;
-		goto out;
-	}
-
 	ath_dbg(common, CONFIG, "Attach a VIF of type: %d\n", vif->type);
 
 	sc->nvifs++;
drivers/net/wireless/ath/ath9k/recv.c +4 -3
index 1c4583c..a2f7ae8 100644
@@ -695,9 +695,9 @@ static bool ath_edma_get_buffers(struct ath_softc *sc,
 			__skb_unlink(skb, &rx_edma->rx_fifo);
 			list_add_tail(&bf->list, &sc->rx.rxbuf);
 			ath_rx_edma_buf_link(sc, qtype);
-		} else {
-			bf = NULL;
 		}
+
+		bf = NULL;
 	}
 
 	*dest = bf;
@@ -821,7 +821,8 @@ static bool ath9k_rx_accept(struct ath_common *common,
 	 * descriptor does contain a valid key index. This has been observed
 	 * mostly with CCMP encryption.
 	 */
-	if (rx_stats->rs_keyix == ATH9K_RXKEYIX_INVALID)
+	if (rx_stats->rs_keyix == ATH9K_RXKEYIX_INVALID ||
+	    !test_bit(rx_stats->rs_keyix, common->ccmp_keymap))
 		rx_stats->rs_status &= ~ATH9K_RXERR_KEYMISS;
 
 	if (!rx_stats->rs_datalen)
drivers/net/wireless/ath/ath9k/xmit.c +18 -13
index d59dd01..4d57139 100644
@@ -938,6 +938,7 @@ static void ath_buf_set_rate(struct ath_softc *sc, struct ath_buf *bf,
 	struct ieee80211_tx_rate *rates;
 	const struct ieee80211_rate *rate;
 	struct ieee80211_hdr *hdr;
+	struct ath_frame_info *fi = get_frame_info(bf->bf_mpdu);
 	int i;
 	u8 rix = 0;
 
@@ -948,18 +949,7 @@ static void ath_buf_set_rate(struct ath_softc *sc, struct ath_buf *bf,
 
 	/* set dur_update_en for l-sig computation except for PS-Poll frames */
 	info->dur_update = !ieee80211_is_pspoll(hdr->frame_control);
-
-	/*
-	 * We check if Short Preamble is needed for the CTS rate by
-	 * checking the BSS's global flag.
-	 * But for the rate series, IEEE80211_TX_RC_USE_SHORT_PREAMBLE is used.
-	 */
-	rate = ieee80211_get_rts_cts_rate(sc->hw, tx_info);
-	info->rtscts_rate = rate->hw_value;
-
-	if (tx_info->control.vif &&
-	    tx_info->control.vif->bss_conf.use_short_preamble)
-		info->rtscts_rate |= rate->hw_value_short;
+	info->rtscts_rate = fi->rtscts_rate;
 
 	for (i = 0; i < 4; i++) {
 		bool is_40, is_sgi, is_sp;
@@ -1001,13 +991,13 @@ static void ath_buf_set_rate(struct ath_softc *sc, struct ath_buf *bf,
 		}
 
 		/* legacy rates */
+		rate = &sc->sbands[tx_info->band].bitrates[rates[i].idx];
 		if ((tx_info->band == IEEE80211_BAND_2GHZ) &&
 		    !(rate->flags & IEEE80211_RATE_ERP_G))
 			phy = WLAN_RC_PHY_CCK;
 		else
 			phy = WLAN_RC_PHY_OFDM;
 
-		rate = &sc->sbands[tx_info->band].bitrates[rates[i].idx];
 		info->rates[i].Rate = rate->hw_value;
 		if (rate->hw_value_short) {
 			if (rates[i].flags & IEEE80211_TX_RC_USE_SHORT_PREAMBLE)
@@ -1776,10 +1766,22 @@ static void setup_frame_info(struct ieee80211_hw *hw, struct sk_buff *skb,
 	struct ieee80211_sta *sta = tx_info->control.sta;
 	struct ieee80211_key_conf *hw_key = tx_info->control.hw_key;
 	struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
+	const struct ieee80211_rate *rate;
 	struct ath_frame_info *fi = get_frame_info(skb);
 	struct ath_node *an = NULL;
 	enum ath9k_key_type keytype;
+	bool short_preamble = false;
+
+	/*
+	 * We check if Short Preamble is needed for the CTS rate by
+	 * checking the BSS's global flag.
+	 * But for the rate series, IEEE80211_TX_RC_USE_SHORT_PREAMBLE is used.
+	 */
+	if (tx_info->control.vif &&
+	    tx_info->control.vif->bss_conf.use_short_preamble)
+		short_preamble = true;
 
+	rate = ieee80211_get_rts_cts_rate(hw, tx_info);
 	keytype = ath9k_cmn_get_hw_crypto_keytype(skb);
 
 	if (sta)
@@ -1794,6 +1796,9 @@ static void setup_frame_info(struct ieee80211_hw *hw, struct sk_buff *skb,
 		fi->keyix = ATH9K_TXKEYIX_INVALID;
 	fi->keytype = keytype;
 	fi->framelen = framelen;
+	fi->rtscts_rate = rate->hw_value;
+	if (short_preamble)
+		fi->rtscts_rate |= rate->hw_value_short;
 }
 
 u8 ath_txchainmask_reduction(struct ath_softc *sc, u8 chainmask, u32 rate)
drivers/net/wireless/ath/key.c +4 -0
index 0e81904..5c54aa4 100644
@@ -556,6 +556,9 @@ int ath_key_config(struct ath_common *common,
 		return -EIO;
 
 	set_bit(idx, common->keymap);
+	if (key->cipher == WLAN_CIPHER_SUITE_CCMP)
+		set_bit(idx, common->ccmp_keymap);
+
 	if (key->cipher == WLAN_CIPHER_SUITE_TKIP) {
 		set_bit(idx + 64, common->keymap);
 		set_bit(idx, common->tkip_keymap);
@@ -582,6 +585,7 @@ void ath_key_delete(struct ath_common *common, struct ieee80211_key_conf *key)
 		return;
 
 	clear_bit(key->hw_key_idx, common->keymap);
+	clear_bit(key->hw_key_idx, common->ccmp_keymap);
 	if (key->cipher != WLAN_CIPHER_SUITE_TKIP)
 		return;
 
drivers/net/wireless/ipw2x00/ipw.h new file +23 -0
new file mode 100644
index 0000000..4007bf5
@@ -0,0 +1,23 @@
+/*
+ * Intel Pro/Wireless 2100, 2200BG, 2915ABG network connection driver
+ *
+ * Copyright 2012 Stanislav Yakovlev <[email protected]>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef __IPW_H__
+#define __IPW_H__
+
+#include <linux/ieee80211.h>
+
+static const u32 ipw_cipher_suites[] = {
+	WLAN_CIPHER_SUITE_WEP40,
+	WLAN_CIPHER_SUITE_WEP104,
+	WLAN_CIPHER_SUITE_TKIP,
+	WLAN_CIPHER_SUITE_CCMP,
+};
+
+#endif
drivers/net/wireless/ipw2x00/ipw2100.c +4 -0
index f0551f8..7c8e8b1 100644
@@ -166,6 +166,7 @@ that only one external action is invoked at a time.
 #include <net/lib80211.h>
 
 #include "ipw2100.h"
+#include "ipw.h"
 
 #define IPW2100_VERSION "git-1.2.2"
 
@@ -1946,6 +1947,9 @@ static int ipw2100_wdev_init(struct net_device *dev)
 		wdev->wiphy->bands[IEEE80211_BAND_2GHZ] = bg_band;
 	}
 
+	wdev->wiphy->cipher_suites = ipw_cipher_suites;
+	wdev->wiphy->n_cipher_suites = ARRAY_SIZE(ipw_cipher_suites);
+
 	set_wiphy_dev(wdev->wiphy, &priv->pci_dev->dev);
 	if (wiphy_register(wdev->wiphy)) {
 		ipw2100_down(priv);
drivers/net/wireless/ipw2x00/ipw2200.c +4 -0
index 1779db3..3a6b991 100644
@@ -34,6 +34,7 @@
 #include <linux/slab.h>
 #include <net/cfg80211-wext.h>
 #include "ipw2200.h"
+#include "ipw.h"
 
 
 #ifndef KBUILD_EXTMOD
@@ -11544,6 +11545,9 @@ static int ipw_wdev_init(struct net_device *dev)
 		wdev->wiphy->bands[IEEE80211_BAND_5GHZ] = a_band;
 	}
 
+	wdev->wiphy->cipher_suites = ipw_cipher_suites;
+	wdev->wiphy->n_cipher_suites = ARRAY_SIZE(ipw_cipher_suites);
+
 	set_wiphy_dev(wdev->wiphy, &priv->pci_dev->dev);
 
 	/* With that information in place, we can now register the wiphy... */
drivers/net/wireless/iwlwifi/iwl-mac80211.c +12 -0
index 1018f9b..e0e6c67 100644
@@ -788,6 +788,18 @@ static int iwlagn_mac_sta_state(struct ieee80211_hw *hw,
 	switch (op) {
 	case ADD:
 		ret = iwlagn_mac_sta_add(hw, vif, sta);
+		if (ret)
+			break;
+		/*
+		 * Clear the in-progress flag, the AP station entry was added
+		 * but we'll initialize LQ only when we've associated (which
+		 * would also clear the in-progress flag). This is necessary
+		 * in case we never initialize LQ because association fails.
+		 */
+		spin_lock_bh(&priv->sta_lock);
+		priv->stations[iwl_sta_id(sta)].used &=
+			~IWL_STA_UCODE_INPROGRESS;
+		spin_unlock_bh(&priv->sta_lock);
 		break;
 	case REMOVE:
 		ret = iwlagn_mac_sta_remove(hw, vif, sta);
drivers/net/wireless/iwlwifi/iwl-trans-pcie.c +6 -0
index 6eac984..8741048 100644
@@ -2000,6 +2000,7 @@ static ssize_t iwl_dbgfs_rx_queue_read(struct file *file,
 	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
 }
 
+#ifdef CONFIG_IWLWIFI_DEBUG
 static ssize_t iwl_dbgfs_log_event_read(struct file *file,
 					 char __user *user_buf,
 					 size_t count, loff_t *ppos)
@@ -2037,6 +2038,7 @@ static ssize_t iwl_dbgfs_log_event_write(struct file *file,
 
 	return count;
 }
+#endif
 
 static ssize_t iwl_dbgfs_interrupt_read(struct file *file,
 					char __user *user_buf,
@@ -2164,7 +2166,9 @@ static ssize_t iwl_dbgfs_fh_reg_read(struct file *file,
 	return ret;
 }
 
+#ifdef CONFIG_IWLWIFI_DEBUG
 DEBUGFS_READ_WRITE_FILE_OPS(log_event);
+#endif
 DEBUGFS_READ_WRITE_FILE_OPS(interrupt);
 DEBUGFS_READ_FILE_OPS(fh_reg);
 DEBUGFS_READ_FILE_OPS(rx_queue);
@@ -2180,7 +2184,9 @@ static int iwl_trans_pcie_dbgfs_register(struct iwl_trans *trans,
 {
 	DEBUGFS_ADD_FILE(rx_queue, dir, S_IRUSR);
 	DEBUGFS_ADD_FILE(tx_queue, dir, S_IRUSR);
+#ifdef CONFIG_IWLWIFI_DEBUG
 	DEBUGFS_ADD_FILE(log_event, dir, S_IWUSR | S_IRUSR);
+#endif
 	DEBUGFS_ADD_FILE(interrupt, dir, S_IWUSR | S_IRUSR);
 	DEBUGFS_ADD_FILE(csr, dir, S_IWUSR);
 	DEBUGFS_ADD_FILE(fh_reg, dir, S_IRUSR);
drivers/net/wireless/mwifiex/11n_rxreorder.c +3 -2
index 9c44088..900ee12 100644
@@ -256,7 +256,8 @@ mwifiex_11n_create_rx_reorder_tbl(struct mwifiex_private *priv, u8 *ta,
 	else
 		last_seq = priv->rx_seq[tid];
 
-	if (last_seq >= new_node->start_win)
+	if (last_seq != MWIFIEX_DEF_11N_RX_SEQ_NUM &&
+	    last_seq >= new_node->start_win)
 		new_node->start_win = last_seq + 1;
 
 	new_node->win_size = win_size;
@@ -596,5 +597,5 @@ void mwifiex_11n_cleanup_reorder_tbl(struct mwifiex_private *priv)
 	spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags);
 
 	INIT_LIST_HEAD(&priv->rx_reorder_tbl_ptr);
-	memset(priv->rx_seq, 0, sizeof(priv->rx_seq));
+	mwifiex_reset_11n_rx_seq_num(priv);
 }
drivers/net/wireless/mwifiex/11n_rxreorder.h +7 -0
index f1bffeb..6c9815a 100644
@@ -37,6 +37,13 @@
 
 #define ADDBA_RSP_STATUS_ACCEPT 0
 
+#define MWIFIEX_DEF_11N_RX_SEQ_NUM	0xffff
+
+static inline void mwifiex_reset_11n_rx_seq_num(struct mwifiex_private *priv)
+{
+	memset(priv->rx_seq, 0xff, sizeof(priv->rx_seq));
+}
+
 int mwifiex_11n_rx_reorder_pkt(struct mwifiex_private *,
 			       u16 seqNum,
 			       u16 tid, u8 *ta,
drivers/net/wireless/mwifiex/cfg80211.c +9 -12
index 6505038..baf6919 100644
@@ -1214,11 +1214,11 @@ struct net_device *mwifiex_add_virtual_intf(struct wiphy *wiphy,
 	void *mdev_priv;
 
 	if (!priv)
-		return NULL;
+		return ERR_PTR(-EFAULT);
 
 	adapter = priv->adapter;
 	if (!adapter)
-		return NULL;
+		return ERR_PTR(-EFAULT);
 
 	switch (type) {
 	case NL80211_IFTYPE_UNSPECIFIED:
@@ -1227,7 +1227,7 @@ struct net_device *mwifiex_add_virtual_intf(struct wiphy *wiphy,
 		if (priv->bss_mode) {
 			wiphy_err(wiphy, "cannot create multiple"
 					" station/adhoc interfaces\n");
-			return NULL;
+			return ERR_PTR(-EINVAL);
 		}
 
 		if (type == NL80211_IFTYPE_UNSPECIFIED)
@@ -1244,14 +1244,15 @@ struct net_device *mwifiex_add_virtual_intf(struct wiphy *wiphy,
 		break;
 	default:
 		wiphy_err(wiphy, "type not supported\n");
-		return NULL;
+		return ERR_PTR(-EINVAL);
 	}
 
 	dev = alloc_netdev_mq(sizeof(struct mwifiex_private *), name,
 			      ether_setup, 1);
 	if (!dev) {
 		wiphy_err(wiphy, "no memory available for netdevice\n");
-		goto error;
+		priv->bss_mode = NL80211_IFTYPE_UNSPECIFIED;
+		return ERR_PTR(-ENOMEM);
 	}
 
 	dev_net_set(dev, wiphy_net(wiphy));
@@ -1276,7 +1277,9 @@ struct net_device *mwifiex_add_virtual_intf(struct wiphy *wiphy,
 	/* Register network device */
 	if (register_netdevice(dev)) {
 		wiphy_err(wiphy, "cannot register virtual network device\n");
-		goto error;
+		free_netdev(dev);
+		priv->bss_mode = NL80211_IFTYPE_UNSPECIFIED;
+		return ERR_PTR(-EFAULT);
 	}
 
 	sema_init(&priv->async_sem, 1);
@@ -1288,12 +1291,6 @@ struct net_device *mwifiex_add_virtual_intf(struct wiphy *wiphy,
 	mwifiex_dev_debugfs_init(priv);
 #endif
 	return dev;
-error:
-	if (dev && (dev->reg_state == NETREG_UNREGISTERED))
-		free_netdev(dev);
-	priv->bss_mode = NL80211_IFTYPE_UNSPECIFIED;
-
-	return NULL;
 }
 EXPORT_SYMBOL_GPL(mwifiex_add_virtual_intf);
 
drivers/net/wireless/mwifiex/wmm.c +3 -0
index 5a7316c..3e6abf0 100644
@@ -404,6 +404,8 @@ mwifiex_wmm_init(struct mwifiex_adapter *adapter)
 		priv->add_ba_param.tx_win_size = MWIFIEX_AMPDU_DEF_TXWINSIZE;
 		priv->add_ba_param.rx_win_size = MWIFIEX_AMPDU_DEF_RXWINSIZE;
 
+		mwifiex_reset_11n_rx_seq_num(priv);
+
 		atomic_set(&priv->wmm.tx_pkts_queued, 0);
 		atomic_set(&priv->wmm.highest_queued_prio, HIGH_PRIO_TID);
 	}
@@ -1209,6 +1211,7 @@ mwifiex_dequeue_tx_packet(struct mwifiex_adapter *adapter)
 
 	if (!ptr->is_11n_enabled ||
 	    mwifiex_is_ba_stream_setup(priv, ptr, tid) ||
+	    priv->wps.session_enable ||
 	    ((priv->sec_info.wpa_enabled ||
 	      priv->sec_info.wpa2_enabled) &&
 	     !priv->wpa_is_gtk_set)) {
drivers/net/wireless/rtl818x/rtl8187/leds.c +1 -1
index 2e0de2f..c2d5b49 100644
@@ -117,7 +117,7 @@ static void rtl8187_led_brightness_set(struct led_classdev *led_dev,
 			radio_on = true;
 		} else if (radio_on) {
 			radio_on = false;
-			cancel_delayed_work_sync(&priv->led_on);
+			cancel_delayed_work(&priv->led_on);
 			ieee80211_queue_delayed_work(hw, &priv->led_off, 0);
 		}
 	} else if (radio_on) {
drivers/net/wireless/rtlwifi/rtl8192cu/sw.c +3 -0
index 82c85286..5bd4085 100644
@@ -301,9 +301,11 @@ static struct usb_device_id rtl8192c_usb_ids[] = {
 	{RTL_USB_DEVICE(0x07b8, 0x8188, rtl92cu_hal_cfg)}, /*Abocom - Abocom*/
 	{RTL_USB_DEVICE(0x07b8, 0x8189, rtl92cu_hal_cfg)}, /*Funai - Abocom*/
 	{RTL_USB_DEVICE(0x0846, 0x9041, rtl92cu_hal_cfg)}, /*NetGear WNA1000M*/
+	{RTL_USB_DEVICE(0x0bda, 0x5088, rtl92cu_hal_cfg)}, /*Thinkware-CC&C*/
 	{RTL_USB_DEVICE(0x0df6, 0x0052, rtl92cu_hal_cfg)}, /*Sitecom - Edimax*/
 	{RTL_USB_DEVICE(0x0df6, 0x005c, rtl92cu_hal_cfg)}, /*Sitecom - Edimax*/
 	{RTL_USB_DEVICE(0x0eb0, 0x9071, rtl92cu_hal_cfg)}, /*NO Brand - Etop*/
+	{RTL_USB_DEVICE(0x4856, 0x0091, rtl92cu_hal_cfg)}, /*NetweeN - Feixun*/
[… more lines in the raw message]

Lines of this file are not shown. View the raw message.

drivers/net/xen-netfront.c +4 -4
index 0ebbb19..796afbf 100644

Lines of this file are not shown. View the raw message.

drivers/oprofile/oprofile_perf.c +1 -1
index da14432..efc4b7f 100644

Lines of this file are not shown. View the raw message.

drivers/pci/pci-driver.c +12 -0
index 6b54b23..3cd3f45 100644

Lines of this file are not shown. View the raw message.

drivers/pci/pci.c +0 -5
index f597a1a..111569c 100644

Lines of this file are not shown. View the raw message.

drivers/pci/quirks.c +0 -26
index bf33f0b..4bf7102 100644

Lines of this file are not shown. View the raw message.

drivers/remoteproc/Kconfig +2 -0
index 24d880e..f8d818a 100644

Lines of this file are not shown. View the raw message.

drivers/rpmsg/virtio_rpmsg_bus.c +50 -5

55 lines not on this page · raw message

drivers/rtc/rtc-ab8500.c +1 -1
index 4bcf9ca..b11a2ec 100644

Lines of this file are not shown. View the raw message.

drivers/rtc/rtc-mxc.c +3 -2
index 5e1d64e..e3e50d6 100644

Lines of this file are not shown. View the raw message.

drivers/rtc/rtc-spear.c +1 -1
index e38da0d..235b0ef 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/aic94xx/aic94xx_task.c +1 -1
index 532d212..393e7ce 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/libsas/sas_ata.c +6 -6
index 441d88a..d109cc3 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/sd.c +2 -0
index 5ba5c2a..a239382 100644

Lines of this file are not shown. View the raw message.

drivers/staging/iio/adc/ad7606_core.c +1 -0
index 97e8d3d..7322c16 100644

Lines of this file are not shown. View the raw message.

drivers/staging/rtl8712/usb_intf.c +2 -0
index e419b4f..2c80745 100644

Lines of this file are not shown. View the raw message.

drivers/target/tcm_fc/tfc_sess.c +2 -1
index cb99da9..87901fa 100644

Lines of this file are not shown. View the raw message.

drivers/usb/class/cdc-wdm.c +2 -0
index 83d14bf..01d247e 100644

Lines of this file are not shown. View the raw message.

drivers/usb/core/hub.c +10 -8
index c8e0704..6241b71 100644

Lines of this file are not shown. View the raw message.

drivers/usb/host/xhci-hub.c +38 -6

44 lines not on this page · raw message

drivers/usb/host/xhci-ring.c +11 -0
index 525a1ee..158175bf 100644

Lines of this file are not shown. View the raw message.

drivers/usb/host/xhci.h +5 -1
index ac14276..59434fe 100644

Lines of this file are not shown. View the raw message.

drivers/usb/serial/cp210x.c +11 -0
index 95de9c0..53e7e69 100644

Lines of this file are not shown. View the raw message.

drivers/usb/serial/metro-usb.c +0 -8
index 08d16e8..7c14671 100644

Lines of this file are not shown. View the raw message.

drivers/usb/serial/option.c +34 -0
index 2706d8a..49484b3 100644

Lines of this file are not shown. View the raw message.

drivers/usb/storage/scsiglue.c +6 -0
index a324a5d..11418da 100644

Lines of this file are not shown. View the raw message.

drivers/usb/storage/unusual_devs.h +0 -7
index f4d3e1a..8f3cbb8 100644

Lines of this file are not shown. View the raw message.

drivers/video/omap2/dss/apply.c +1 -1
index b10b3bc..cb19af2 100644

Lines of this file are not shown. View the raw message.

drivers/video/omap2/dss/dispc.c +3 -2
index ee30937..c4d0e44 100644

Lines of this file are not shown. View the raw message.

drivers/video/omap2/dss/dss.h +2 -1
index d4b3dff..d0638da 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/tree-log.c +6 -0
index eb1ae90..dce89da 100644

Lines of this file are not shown. View the raw message.

fs/cifs/connect.c +20 -21

41 lines not on this page · raw message

fs/ecryptfs/kthread.c +1 -1
index 69f994a..0dbe58a 100644

Lines of this file are not shown. View the raw message.

fs/ecryptfs/miscdev.c +29 -19

48 lines not on this page · raw message

fs/exec.c +1 -1
index b1fd202..29e5f84 100644

Lines of this file are not shown. View the raw message.

fs/lockd/clntlock.c +8 -5
index ba1dc2e..ca0a080 100644

Lines of this file are not shown. View the raw message.

fs/lockd/svc.c +23 -15
index f49b9af..3250f28 100644

Lines of this file are not shown. View the raw message.

fs/nfs/callback.c +13 -3
index eb95f50..38a44c6 100644

Lines of this file are not shown. View the raw message.

fs/nfs/idmap.c +8 -5
index 3e8edbe..93aa3a4 100644

Lines of this file are not shown. View the raw message.

fs/nfsd/nfsctl.c +9 -3
index 2c53be6..3ab12eb 100644

Lines of this file are not shown. View the raw message.

fs/nfsd/nfssvc.c +26 -3
index 28dfad3..bcda12a 100644

Lines of this file are not shown. View the raw message.

fs/nilfs2/gcinode.c +2 -0
index 08a07a2..57ceaf3 100644

Lines of this file are not shown. View the raw message.

fs/nilfs2/segment.c +2 -0
index 0e72ad6..88e11fb 100644

Lines of this file are not shown. View the raw message.

fs/ocfs2/file.c +4 -2
index 061591a..7602783 100644

Lines of this file are not shown. View the raw message.

fs/open.c +3 -3
index 5720854..3f1108b 100644

Lines of this file are not shown. View the raw message.

fs/ramfs/file-nommu.c +1 -0
index fbb0b47..d5378d0 100644

Lines of this file are not shown. View the raw message.

fs/splice.c +20 -15
index f847684..5cac690 100644

Lines of this file are not shown. View the raw message.

fs/udf/super.c +64 -38

102 lines not on this page · raw message

include/asm-generic/pgtable.h +30 -2
index 125c54e..c7ec2cd 100644

Lines of this file are not shown. View the raw message.

include/linux/aio.h +1 -0
index 2314ad8..b1a520e 100644

Lines of this file are not shown. View the raw message.

include/linux/lockd/bind.h +2 -2
index 11a966e..4d24d64 100644

Lines of this file are not shown. View the raw message.

include/linux/memblock.h +1 -3
index a6bb102..19dc455 100644

Lines of this file are not shown. View the raw message.

include/linux/mm_types.h +10 -0
index 3cc3062..b35752f 100644

Lines of this file are not shown. View the raw message.

include/linux/mmzone.h +1 -1
index dff7115..5f6806b 100644

Lines of this file are not shown. View the raw message.

include/linux/pci.h +0 -2
index 8b2921a..e444f5b 100644

Lines of this file are not shown. View the raw message.

include/linux/rpmsg.h +6 -0
index a8e50e4..82a6739 100644

Lines of this file are not shown. View the raw message.

include/linux/skbuff.h +2 -5
index c168907..c1bae8d 100644

Lines of this file are not shown. View the raw message.

include/linux/splice.h +4 -4
index 26e5b61..09a545a 100644

Lines of this file are not shown. View the raw message.

include/linux/sunrpc/svc.h +1 -0
index 51b29ac..2b43e02 100644

Lines of this file are not shown. View the raw message.

include/net/cipso_ipv4.h +28 -1
index 9808877..a7a683e 100644

Lines of this file are not shown. View the raw message.

include/net/inetpeer.h +4 -1
index b94765e..2040bff 100644

Lines of this file are not shown. View the raw message.

include/net/sch_generic.h +5 -2
index 55ce96b..9d7d54a 100644

Lines of this file are not shown. View the raw message.

include/scsi/libsas.h +4 -2
index f4f1c96..10ce74f 100644

Lines of this file are not shown. View the raw message.

include/scsi/scsi_cmnd.h +7 -1
index 1e11985..ac06cc5 100644

Lines of this file are not shown. View the raw message.

include/scsi/scsi_device.h +1 -0
index 6efb2e1..ba96988 100644

Lines of this file are not shown. View the raw message.

kernel/exit.c +1 -0
index d8bd3b42..9d81012 100644

Lines of this file are not shown. View the raw message.

kernel/relay.c +3 -2
index ab56a17..e8cd202 100644

Lines of this file are not shown. View the raw message.

kernel/trace/trace.c +6 -2
index 464a96f..55e4d4c 100644

Lines of this file are not shown. View the raw message.

lib/dynamic_queue_limits.c +11 -7
index 6ab4587..0777c5a 100644

Lines of this file are not shown. View the raw message.

mm/compaction.c +4 -1
index 74a8c82..459b0ab 100644

Lines of this file are not shown. View the raw message.

mm/madvise.c +13 -3
index 1ccbba5..55f645c 100644

Lines of this file are not shown. View the raw message.

mm/memblock.c +79 -44

123 lines not on this page · raw message

mm/nobootmem.c +23 -15
index 1983fb1..218e6f9 100644

Lines of this file are not shown. View the raw message.

mm/shmem.c +2 -1
index f99ff3e..9d65a02 100644

Lines of this file are not shown. View the raw message.

mm/vmscan.c +5 -2
index 0932dc2..4607cc6 100644

Lines of this file are not shown. View the raw message.

net/batman-adv/routing.c +2 -0
index 7f8e158..8df3a1f 100644

Lines of this file are not shown. View the raw message.

net/batman-adv/translation-table.c +4 -4
index 1f86921..f014bf8 100644

Lines of this file are not shown. View the raw message.

net/bridge/br_if.c +1 -0
index 0a942fb..e1144e1 100644

Lines of this file are not shown. View the raw message.

net/bridge/br_netlink.c +1 -1
index a1daf82..cbf9ccd 100644

Lines of this file are not shown. View the raw message.

net/bridge/br_private.h +1 -0
index e1d8822..51e8826 100644

Lines of this file are not shown. View the raw message.

net/can/raw.c +0 -3
index cde1b4a..46cca3a 100644

Lines of this file are not shown. View the raw message.

net/core/dev.c +1 -22
index 99e1d75..533c586 100644

Lines of this file are not shown. View the raw message.

net/core/drop_monitor.c +33 -69

102 lines not on this page · raw message

net/core/neighbour.c +6 -8
index 0a68045..73b9035 100644

Lines of this file are not shown. View the raw message.

net/core/netpoll.c +6 -5
index 3d84fb9..f9f40b9 100644

Lines of this file are not shown. View the raw message.

net/core/skbuff.c +2 -1
index e598400..e99aedd 100644

Lines of this file are not shown. View the raw message.

net/core/sock.c +5 -2
index b2e14c0..0f8402e 100644

Lines of this file are not shown. View the raw message.

net/ipv4/inetpeer.c +12 -4
index d4d61b6..dfba343 100644

Lines of this file are not shown. View the raw message.

net/ipv6/ip6_fib.c +1 -1
index 9371743..92bb9cb 100644

Lines of this file are not shown. View the raw message.

net/ipv6/route.c +31 -10

41 lines not on this page · raw message

net/iucv/af_iucv.c +0 -1
index 07d7d55..cd6f7a9 100644

Lines of this file are not shown. View the raw message.

net/l2tp/l2tp_eth.c +2 -0
index 63fe5f3..7446038 100644

Lines of this file are not shown. View the raw message.

net/l2tp/l2tp_ip.c +6 -3
index cc8ad7b..b1d4370 100644

Lines of this file are not shown. View the raw message.

net/mac80211/mlme.c +12 -12
index 20c680b..1197e8d 100644

Lines of this file are not shown. View the raw message.

net/mac80211/rx.c +4 -1
index d64e285..c9b508e 100644

Lines of this file are not shown. View the raw message.

net/nfc/nci/ntf.c +5 -5
index 2e3dee4..e460cf1 100644

Lines of this file are not shown. View the raw message.

net/nfc/rawsock.c +4 -1
index 5a839ce..e879dce 100644

Lines of this file are not shown. View the raw message.

net/sunrpc/rpcb_clnt.c +7 -5
index 78ac39f..4c38b33 100644

Lines of this file are not shown. View the raw message.

net/sunrpc/svc.c +10 -13
index 234ee39..cb7c13f 100644

Lines of this file are not shown. View the raw message.

net/wireless/reg.c +1 -1
index 15f3474..baf5704 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/hda_codec.c +2 -0
index 841475c..926b455 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/patch_realtek.c +1 -0
index e56c2c8..c43264f 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/patch_sigmatel.c +2 -2
index 2cb1e08..7494fbc 100644

Lines of this file are not shown. View the raw message.

sound/soc/codecs/tlv320aic3x.c +1 -3
index 8d20f6e..b8f0262 100644

Lines of this file are not shown. View the raw message.

sound/soc/codecs/tlv320aic3x.h +1 -0
index 6f097fb..08c7f66 100644

Lines of this file are not shown. View the raw message.

sound/soc/codecs/wm2200.c +1 -0
index acbdc5f..32682c1 100644

Lines of this file are not shown. View the raw message.

tools/hv/hv_kvp_daemon.c +7 -3
index 146fd61..d9834b3 100644

Lines of this file are not shown. View the 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.