Linux 4.4.293
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.4.293 kernel.
All users of the 4.4 kernel series must upgrade.
The updated 4.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.4.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/arm/Makefile | 22 +- arch/arm/boot/dts/omap-gpmc-smsc9221.dtsi | 2 arch/arm/boot/dts/omap3-overo-tobiduo-common.dtsi | 2 arch/arm/kernel/stacktrace.c | 3 arch/arm/mm/Kconfig | 2 arch/hexagon/lib/io.c | 4 arch/ia64/Kconfig.debug | 2 arch/m68k/Kconfig.machine | 1 arch/mips/Kconfig | 3 arch/mips/bcm63xx/clk.c | 6 arch/mips/lantiq/xway/dma.c | 14 + arch/mips/sni/time.c | 4 arch/parisc/kernel/entry.S | 4 arch/parisc/kernel/smp.c | 19 ++ arch/parisc/mm/init.c | 4 arch/powerpc/boot/dts/charon.dts | 2 arch/powerpc/boot/dts/digsy_mtc.dts | 2 arch/powerpc/boot/dts/lite5200.dts | 2 arch/powerpc/boot/dts/lite5200b.dts | 2 arch/powerpc/boot/dts/media5200.dts | 2 arch/powerpc/boot/dts/mpc5200b.dtsi | 2 arch/powerpc/boot/dts/o2d.dts | 2 arch/powerpc/boot/dts/o2d.dtsi | 2 arch/powerpc/boot/dts/o2dnt2.dts | 2 arch/powerpc/boot/dts/o3dnt.dts | 2 arch/powerpc/boot/dts/pcm032.dts | 2 arch/powerpc/boot/dts/tqm5200.dts | 2 arch/powerpc/sysdev/dcr-low.S | 2 arch/sh/Kconfig.debug | 1 arch/sh/include/asm/sfp-machine.h | 8 + arch/sh/kernel/cpu/sh4a/smp-shx3.c | 5 arch/x86/include/asm/page_64_types.h | 2 arch/x86/kernel/irq.c | 4 crypto/pcrypt.c | 12 + drivers/acpi/acpica/acglobal.h | 2 drivers/acpi/acpica/hwesleep.c | 8 - drivers/acpi/acpica/hwsleep.c | 11 - drivers/acpi/acpica/hwxfsleep.c | 7 drivers/acpi/battery.c | 2 drivers/android/binder.c | 23 +-- drivers/ata/libata-eh.c | 8 + drivers/cpuidle/sysfs.c | 5 drivers/crypto/qat/qat_common/adf_pf2vf_msg.c | 7 drivers/dma/at_xdmac.c | 2 drivers/edac/sb_edac.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c | 1 drivers/gpu/drm/msm/msm_gem.c | 4 drivers/gpu/drm/udl/udl_connector.c | 2 drivers/hv/hyperv_vmbus.h | 1 drivers/hwmon/pmbus/lm25066.c | 23 +++ drivers/iio/dac/ad5446.c | 9 + drivers/infiniband/hw/mlx4/qp.c | 4 drivers/input/mouse/elantech.c | 13 + drivers/input/serio/i8042-x86ia64io.h | 14 + drivers/irqchip/irq-s3c24xx.c | 22 ++ drivers/media/i2c/mt9p031.c | 28 +++ drivers/media/pci/netup_unidvb/netup_unidvb_core.c | 27 ++- drivers/media/platform/s5p-mfc/s5p_mfc.c | 2 drivers/media/radio/si470x/radio-si470x-i2c.c | 2 drivers/media/radio/si470x/radio-si470x-usb.c | 2 drivers/media/rc/ite-cir.c | 2 drivers/media/rc/mceusb.c | 1 drivers/media/usb/dvb-usb/az6027.c | 1 drivers/media/usb/dvb-usb/dibusb-common.c | 2 drivers/media/usb/uvc/uvc_v4l2.c | 7 drivers/memory/fsl_ifc.c | 13 - drivers/memstick/core/ms_block.c | 2 drivers/memstick/host/jmb38x_ms.c | 2 drivers/memstick/host/r592.c | 8 - drivers/mmc/host/Kconfig | 2 drivers/mmc/host/dw_mmc.c | 3 drivers/net/bonding/bond_sysfs_slave.c | 36 +--- drivers/net/ethernet/broadcom/bnx2x/bnx2x_init_ops.h | 4 drivers/net/ethernet/ti/davinci_emac.c | 16 +- drivers/net/tun.c | 5 drivers/net/vmxnet3/vmxnet3_drv.c | 1 drivers/net/wireless/ath/ath6kl/usb.c | 7 drivers/net/wireless/ath/ath9k/main.c | 4 drivers/net/wireless/ath/dfs_pattern_detector.c | 10 - drivers/net/wireless/ath/wcn36xx/main.c | 4 drivers/net/wireless/b43/phy_g.c | 2 drivers/net/wireless/b43legacy/radio.c | 2 drivers/net/wireless/iwlwifi/mvm/utils.c | 3 drivers/net/wireless/libertas/if_usb.c | 2 drivers/net/wireless/libertas_tf/if_usb.c | 2 drivers/net/wireless/mwifiex/11n.c | 5 drivers/net/wireless/mwifiex/pcie.c | 8 + drivers/net/wireless/mwifiex/usb.c | 16 ++ drivers/net/wireless/mwl8k.c | 2 drivers/net/xen-netfront.c | 8 + drivers/nfc/pn533.c | 6 drivers/pci/msi.c | 24 +-- drivers/pci/quirks.c | 1 drivers/platform/x86/hp_accel.c | 2 drivers/platform/x86/thinkpad_acpi.c | 2 drivers/platform/x86/wmi.c | 9 + drivers/power/max17042_battery.c | 8 - drivers/power/rt5033_battery.c | 2 drivers/scsi/advansys.c | 4 drivers/scsi/csiostor/csio_lnode.c | 2 drivers/scsi/dc395x.c | 1 drivers/scsi/lpfc/lpfc_sli.c | 1 drivers/scsi/qla2xxx/qla_gbl.h | 2 drivers/scsi/qla2xxx/qla_mr.c | 23 --- drivers/scsi/qla2xxx/qla_os.c | 27 --- drivers/sh/maple/maple.c | 5 drivers/spi/spi-pl022.c | 5 drivers/target/target_core_alua.c | 1 drivers/target/target_core_device.c | 2 drivers/target/target_core_internal.h | 1 drivers/target/target_core_transport.c | 76 +++++++--- drivers/tty/serial/8250/8250_dw.c | 2 drivers/tty/tty_buffer.c | 3 drivers/usb/chipidea/core.c | 21 ++ drivers/usb/gadget/legacy/hid.c | 4 drivers/usb/host/max3421-hcd.c | 25 --- drivers/usb/host/ohci-tmio.c | 2 drivers/usb/host/xhci-hub.c | 3 drivers/usb/misc/iowarrior.c | 8 - drivers/usb/musb/tusb6010.c | 5 drivers/usb/serial/keyspan.c | 15 -- drivers/video/console/sticon.c | 12 - drivers/video/fbdev/chipsfb.c | 2 drivers/watchdog/f71808e_wdt.c | 4 drivers/xen/xen-pciback/conf_space_capability.c | 2 fs/btrfs/async-thread.c | 14 + fs/btrfs/tree-log.c | 4 fs/jfs/jfs_mount.c | 51 ++---- fs/ocfs2/file.c | 8 - fs/quota/quota_tree.c | 15 ++ fs/tracefs/inode.c | 3 include/linux/libata.h | 2 include/linux/lsm_hooks.h | 32 ++-- include/linux/security.h | 28 +-- include/net/llc.h | 4 include/target/target_core_base.h | 6 include/uapi/linux/pci_regs.h | 6 kernel/power/swap.c | 5 kernel/sched/core.c | 3 kernel/signal.c | 17 -- lib/decompress_unxz.c | 2 lib/xz/xz_dec_lzma2.c | 21 ++ lib/xz/xz_dec_stream.c | 6 mm/oom_kill.c | 3 mm/slab.h | 2 net/batman-adv/bat_iv_ogm.c | 4 net/batman-adv/bridge_loop_avoidance.c | 141 +++++++++++++++---- net/batman-adv/bridge_loop_avoidance.h | 4 net/batman-adv/debugfs.c | 1 net/batman-adv/fragmentation.c | 41 +++-- net/batman-adv/hard-interface.c | 3 net/batman-adv/main.c | 44 ++++- net/batman-adv/multicast.c | 31 ++++ net/batman-adv/multicast.h | 15 ++ net/batman-adv/network-coding.c | 4 net/batman-adv/soft-interface.c | 31 ++-- net/batman-adv/translation-table.c | 10 - net/bluetooth/l2cap_sock.c | 10 + net/bluetooth/sco.c | 24 ++- net/core/stream.c | 3 net/netfilter/nfnetlink_queue.c | 2 net/nfc/core.c | 32 ++-- net/nfc/nci/core.c | 11 - net/vmw_vsock/af_vsock.c | 2 net/wireless/util.c | 1 security/security.c | 14 - security/selinux/hooks.c | 31 +--- security/smack/smackfs.c | 11 - sound/core/oss/mixer_oss.c | 43 ++++- sound/core/timer.c | 17 +- sound/isa/gus/gus_dma.c | 2 sound/soc/soc-dapm.c | 29 +++ sound/synth/emux/emux.c | 2 sound/usb/6fire/comm.c | 2 sound/usb/6fire/firmware.c | 6 sound/usb/line6/driver.c | 12 - sound/usb/line6/driver.h | 2 sound/usb/line6/toneport.c | 2 sound/usb/misc/ua101.c | 4 180 files changed, 1121 insertions(+), 577 deletions(-)
Ahmad Fatoum (1):
watchdog: f71808e_wdt: fix inaccurate report in WDIOC_GETTIMEOUT
Aleksander Jan Bajkowski (2):
MIPS: lantiq: dma: add small delay after reset
MIPS: lantiq: dma: reset correct number of channel
Anant Thazhemadam (1):
media: usb: dvd-usb: fix uninit-value bug in dibusb_read_eeprom_byte()
Anatolij Gustschin (1):
powerpc/5200: dts: fix memory node unit name
André Almeida (1):
ACPI: battery: Accept charges over the design capacity as full
Andy Shevchenko (1):
serial: 8250_dw: Drop wrong use of ACPI_PTR()
Anel Orazgaliyeva (1):
cpuidle: Fix kobject memory leaks in error paths
Arnd Bergmann (4):
hyperv/vmbus: include linux/bitops.h
ARM: 9136/1: ARMv7-M uses BE-8, not BE-32
memstick: avoid out-of-range warning
ARM: 9156/1: drop cc-option fallbacks for architecture selection
Austin Kim (1):
ALSA: synth: missing check for possible NULL after the call to kstrdup
Barnabás Pőcze (1):
platform/x86: wmi: do not fail if disabling fails
Bart Van Assche (1):
MIPS: sni: Fix the build
Chengfeng Ye (2):
nfc: pn533: Fix double free when pn533_fill_fragment_skbs() fails
ALSA: gus: fix null pointer dereference on pointer block
Christian Löhle (1):
mmc: dw_mmc: Dont wait for DRTO on Write RSP error
Christophe JAILLET (1):
platform/x86: hp_accel: Fix an error handling path in 'lis3lv02d_probe()'
Christophe Leroy (1):
video: fbdev: chipsfb: use memset_io() instead of memset()
Claudiu Beznea (1):
dmaengine: at_xdmac: fix AT_XDMAC_CC_PERID() macro
Damien Le Moal (1):
libata: fix read log timeout value
Dan Carpenter (6):
b43legacy: fix a lower bounds test
b43: fix a lower bounds test
memstick: jmb38x_ms: use appropriate free function in jmb38x_ms_alloc_host() drm/msm: uninitialized variable in msm_gem_import()
usb: gadget: hid: fix error code in do_config()
scsi: csiostor: Uninitialized data in csio_ln_vnp_read_cbfn()
Daniel Jordan (1):
crypto: pcrypt - Delay write to padata->info
Dirk Bender (1):
media: mt9p031: Fix corrupted frame after restarting stream
Dongli Zhang (2):
xen/netfront: stop tx queues during live migration
vmxnet3: do not stop tx queues after netif_device_detach()
Dongliang Mu (2):
JFS: fix memleak in jfs_mount
memory: fsl_ifc: fix leak of irq and nand_irq in fsl_ifc_ctrl_probe
Eiichi Tsukata (1):
vsock: prevent unnecessary refcnt inc for nonblocking connect
Eric Badger (1):
EDAC/sb_edac: Fix top-of-high-memory value for Broadwell/Haswell
Eric Dumazet (1):
llc: fix out-of-bound array index in llc_sk_dev_hash()
Eric W. Biederman (1):
signal: Remove the bogus sigkill_pending in ptrace_stop
Filipe Manana (1):
btrfs: fix lost error handling when replaying directory deletes
Florian Westphal (1):
netfilter: nfnetlink_queue: fix OOB when mac header was cleared
Giovanni Cabiddu (1):
crypto: qat - detect PFVF collision after ACK
Greg Kroah-Hartman (1):
Linux 4.4.293
Guanghui Feng (1):
tty: tty_buffer: Fix the softlockup issue in flush_to_ldisc
Guo Zhi (1):
scsi: advansys: Fix kernel pointer leak
Helge Deller (1):
parisc: Fix ptrace check on syscall return
Henrik Grimler (1):
power: supply: max17042_battery: use VFSOC for capacity when no rsns
Huang Guobin (1):
bonding: Fix a use-after-free problem when bond_sysfs_slave_add() failed
Ingmar Klein (1):
PCI: Mark Atheros QCA6174 to avoid bus reset
Jackie Liu (1):
ARM: s3c: irq-s3c24xx: Fix return value check for s3c24xx_init_intc()
Jakob Hauser (1):
power: supply: rt5033_battery: Change voltage values to µV
Jakub Kicinski (1):
net: stream: don't purge sk_error_queue in sk_stream_kill_queues()
James Smart (1):
scsi: lpfc: Fix list_add() corruption in lpfc_drain_txq()
Jan Kara (1):
ocfs2: fix data corruption on truncate
Johan Hovold (9):
ALSA: ua101: fix division by zero at probe
ALSA: 6fire: fix control and bulk message timeouts
ALSA: line6: fix control and interrupt message timeouts
mwifiex: fix division by zero in fw download path
ath6kl: fix division by zero in send path
ath6kl: fix control-message timeout
USB: iowarrior: fix control-message timeouts
USB: chipidea: fix interrupt deadlock drm/udl: fix control-message timeout
Johannes Berg (1):
iwlwifi: mvm: disable RX-diversity in powersave
Jonas Dreßler (2):
mwifiex: Read a PCI register after writing the TX ring write pointer
mwifiex: Send DELBA requests according to spec
Kees Cook (1):
media: si470x: Avoid card name truncation
Lasse Collin (2):
lib/xz: Avoid overlapping memcpy() with invalid input with in-place decompression lib/xz: Validate the value before assigning it to an enum variable
Leon Romanovsky (1):
RDMA/mlx4: Return missed an error if device doesn't support steering
Lin Ma (2):
NFC: reorganize the functions in nci_request
NFC: reorder the logic in nfc_{un,}register_device
Linus Lüssing (5):
ath9k: Fix potential interrupt storm on queue reset
batman-adv: Fix multicast TT issues with bogus ROAM flags
batman-adv: mcast: fix duplicate mcast packets in BLA backbone from LAN
batman-adv: mcast: fix duplicate mcast packets in BLA backbone from mesh
batman-adv: mcast: fix duplicate mcast packets from BLA backbone to mesh
Loic Poulain (1):
wcn36xx: Fix HT40 capability for 2Ghz band
Lu Wei (1):
maple: fix wrong return value of maple_bus_init().
Masami Hiramatsu (1):
ARM: clang: Do not rely on lr register for stacktrace
Mathias Nyman (1):
xhci: Fix USB 3.1 enumeration issues by increasing roothub power-on-good delay
Maxim Kiselev (1):
net: davinci_emac: Fix interrupt pacing disable
Michael Ellerman (1):
powerpc/dcr: Use cmplwi instead of 3-argument cmpli
Mike Christie (2):
scsi: target: Fix ordered tag handling
scsi: target: Fix alua_tg_pt_gps_count tracking
Nathan Chancellor (2):
platform/x86: thinkpad_acpi: Fix bitwise vs. logical warning
hexagon: export raw I/O routines for modules
Nguyen Dinh Phi (1):
cfg80211: call cfg80211_stop_ap when switch from P2P_GO type
Nick Desaulniers (1):
sh: check return code of request_irq
Nicolas Dichtel (1):
tun: fix bonding active backup with arp monitoring
Nikolay Borisov (1):
btrfs: fix memory ordering between normal and ordered work functions
Pali Rohár (1):
PCI: Add PCI_EXP_DEVCTL_PAYLOAD_* macros
Pavel Skripkin (4):
ALSA: mixer: fix deadlock in snd_mixer_oss_set_volume
media: dvb-usb: fix ununit-value in az6027_rc_query
net: batman-adv: fix error handling
net: bnx2x: fix variable dereferenced before check
Pawan Gupta (1):
smackfs: Fix use-after-free in netlbl_catmap_walk()
Pekka Korpinen (1):
iio: dac: ad5446: Fix ad5622_write() return value
Peter Zijlstra (1):
x86: Increase exception stack sizes
Phoenix Huang (1):
Input: elantench - fix misreporting trackpoint coordinates
Quinn Tran (1):
scsi: qla2xxx: Turn off target reset during issue_lip
Rafael J. Wysocki (1):
ACPICA: Avoid evaluating methods too early during system resume
Rajat Asthana (1):
media: mceusb: return without resubmitting URB in case of -EPROTO error.
Randy Dunlap (7):
mmc: winbond: don't build on M68K
ia64: don't do IA64_CMPXCHG_DEBUG without CONFIG_PRINTK
m68k: set a default value for MEMORY_RESERVE
sh: fix kconfig unmet dependency warning for FRAME_POINTER
sh: define __BIG_ENDIAN for math-emu
mips: BCM63XX: ensure that CPU_SUPPORTS_32BIT_KERNEL is set
mips: bcm63xx: add support for clk_get_parent()
Ricardo Ribalda (1):
media: uvcvideo: Set capability in s_param
Roger Quadros (1):
ARM: dts: omap: fix gpmc,mux-add-data type
Rustam Kovhaev (1):
mm: kmemleak: slob: respect SLAB_NOLEAKTRACE flag
Sean Christopherson (1):
x86/irq: Ensure PI wakeup handler is unregistered before module unload
Sean Young (1):
media: ite-cir: IR receiver stop working after receive overflow
Sebastian Krzyszkowiak (1):
power: supply: max17042_battery: Prevent int underflow in set_soc_threshold
Steven Rostedt (VMware) (1):
tracefs: Have tracefs directories not set OTH permission bits by default
Sven Eckelmann (6):
batman-adv: Keep fragments equally sized
batman-adv: Prevent duplicated softif_vlan entry
batman-adv: Consider fragmentation for needed_headroom
batman-adv: Reserve needed_*room for fragments
batman-adv: Don't always reallocate the fragmentation skb head
batman-adv: Avoid WARN_ON timing related checks
Sven Schnelle (4):
parisc: fix warning in flush_tlb_all
parisc/kgdb: add kgdb_roundup() to make kgdb work with idle polling parisc/entry: fix trace test in syscall exit path parisc/sticon: fix reverse colors
Taehee Yoo (1):
batman-adv: set .owner to THIS_MODULE
Takashi Iwai (5):
Input: i8042 - Add quirk for Fujitsu Lifebook T725
ALSA: timer: Unconditionally unlink slave instances, too
ALSA: mixer: oss: Fix racy access to slots
Bluetooth: sco: Fix lock_sock() blockage by memcpy_from_msg()
ASoC: DAPM: Cover regression by kctl change notification fix
Tetsuo Handa (2):
smackfs: use __GFP_NOFAIL for smk_cipso_doi()
smackfs: use netlbl_cfg_cipsov4_del() for deleting cipso_v4_doi
Thomas Gleixner (1):
PCI/MSI: Destroy sysfs before freeing entries
Thomas Perrot (1):
spi: spl022: fix Microwire full duplex mode
Todd Kjos (2):
binder: use euid from cred instead of using task
binder: use cred instead of task for selinux checks
Tong Zhang (1):
scsi: dc395: Fix error case unwinding
Tuo Li (2):
media: s5p-mfc: fix possible null-pointer dereference in s5p_mfc_probe()
ath: dfs_pattern_detector: Fix possible null-pointer dereference in channel_detector_create()
Uwe Kleine-König (1):
usb: max-3421: Use driver data instead of maintaining a list of bound devices
Vasily Averin (1):
mm, oom: pagefault_out_of_memory: don't force global OOM for dying tasks
Vincent Donnefort (1):
sched/core: Mitigate race cpus_share_cache()/update_top_cache_domain()
Wang Hai (3):
USB: serial: keyspan: fix memleak on probe errors
libertas_tf: Fix possible memory leak in probe and disconnect
libertas: Fix possible memory leak in probe and disconnect
Wang ShaoBo (1):
Bluetooth: fix use-after-free error in lock_sock_nested()
Wang Wensheng (1):
ALSA: timer: Fix use-after-free problem
Yang Yingliang (2):
usb: musb: tusb6010: check return value after calling platform_get_resource()
usb: host: ohci-tmio: check return value after calling platform_get_resource()
Ye Bin (1):
PM: hibernate: Get block device exclusively in swsusp_check()
YueHaibing (1):
xen-pciback: Fix return in pm_ctrl_init()
Zev Weiss (1):
hwmon: (pmbus/lm25066) Add offset coefficients
Zhang Yi (2):
quota: check block number when reading the block in quota file
quota: correct error number in free_dqentry()
Zheyu Ma (3):
media: netup_unidvb: handle interrupt properly according to the firmware
memstick: r592: Fix a UAF bug when removing the driver
mwl8k: Fix use-after-free in mwl8k_fw_state_machine()
hongao (1):
drm/amdgpu: fix set scaling mode Full/Full aspect/Center not works on vga and dvi connectors
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,6 +1,6 @@ VERSION = 4 PATCHLEVEL = 4 -SUBLEVEL = 292 +SUBLEVEL = 293 EXTRAVERSION = NAME = Blurry Fish Butt
arch/arm/Makefile +11 -11
@@ -66,15 +66,15 @@ KBUILD_CFLAGS += $(call cc-option,-fno-ipa-sra) # Note that GCC does not numerically define an architecture version # macro, but instead defines a whole series of macros which makes # testing for a specific architecture or later rather impossible. -arch-$(CONFIG_CPU_32v7M) =-D__LINUX_ARM_ARCH__=7 -march=armv7-m -Wa,-march=armv7-m -arch-$(CONFIG_CPU_32v7) =-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a) -arch-$(CONFIG_CPU_32v6) =-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6) +arch-$(CONFIG_CPU_32v7M) =-D__LINUX_ARM_ARCH__=7 -march=armv7-m +arch-$(CONFIG_CPU_32v7) =-D__LINUX_ARM_ARCH__=7 -march=armv7-a +arch-$(CONFIG_CPU_32v6) =-D__LINUX_ARM_ARCH__=6 -march=armv6 # Only override the compiler option if ARMv6. The ARMv6K extensions are # always available in ARMv7 ifeq ($(CONFIG_CPU_32v6),y) -arch-$(CONFIG_CPU_32v6K) =-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6k,-march=armv5t -Wa$(comma)-march=armv6k) +arch-$(CONFIG_CPU_32v6K) =-D__LINUX_ARM_ARCH__=6 -march=armv6k endif -arch-$(CONFIG_CPU_32v5) =-D__LINUX_ARM_ARCH__=5 $(call cc-option,-march=armv5te,-march=armv4t) +arch-$(CONFIG_CPU_32v5) =-D__LINUX_ARM_ARCH__=5 -march=armv5te arch-$(CONFIG_CPU_32v4T) =-D__LINUX_ARM_ARCH__=4 -march=armv4t arch-$(CONFIG_CPU_32v4) =-D__LINUX_ARM_ARCH__=4 -march=armv4 arch-$(CONFIG_CPU_32v3) =-D__LINUX_ARM_ARCH__=3 -march=armv3
@@ -88,7 +88,7 @@ tune-$(CONFIG_CPU_ARM720T) =-mtune=arm7tdmi tune-$(CONFIG_CPU_ARM740T) =-mtune=arm7tdmi tune-$(CONFIG_CPU_ARM9TDMI) =-mtune=arm9tdmi tune-$(CONFIG_CPU_ARM940T) =-mtune=arm9tdmi -tune-$(CONFIG_CPU_ARM946E) =$(call cc-option,-mtune=arm9e,-mtune=arm9tdmi) +tune-$(CONFIG_CPU_ARM946E) =-mtune=arm9e tune-$(CONFIG_CPU_ARM920T) =-mtune=arm9tdmi tune-$(CONFIG_CPU_ARM922T) =-mtune=arm9tdmi tune-$(CONFIG_CPU_ARM925T) =-mtune=arm9tdmi
@@ -96,11 +96,11 @@ tune-$(CONFIG_CPU_ARM926T) =-mtune=arm9tdmi tune-$(CONFIG_CPU_FA526) =-mtune=arm9tdmi tune-$(CONFIG_CPU_SA110) =-mtune=strongarm110 tune-$(CONFIG_CPU_SA1100) =-mtune=strongarm1100 -tune-$(CONFIG_CPU_XSCALE) =$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale -tune-$(CONFIG_CPU_XSC3) =$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale -tune-$(CONFIG_CPU_FEROCEON) =$(call cc-option,-mtune=marvell-f,-mtune=xscale) -tune-$(CONFIG_CPU_V6) =$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm) -tune-$(CONFIG_CPU_V6K) =$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm) +tune-$(CONFIG_CPU_XSCALE) =-mtune=xscale +tune-$(CONFIG_CPU_XSC3) =-mtune=xscale +tune-$(CONFIG_CPU_FEROCEON) =-mtune=xscale +tune-$(CONFIG_CPU_V6) =-mtune=arm1136j-s +tune-$(CONFIG_CPU_V6K) =-mtune=arm1136j-s # Evaluate tune cc-option calls now tune-y := $(tune-y)
arch/arm/boot/dts/omap-gpmc-smsc9221.dtsi +1 -1
@@ -28,7 +28,7 @@ compatible = "smsc,lan9221","smsc,lan9115"; bank-width = <2>; - gpmc,mux-add-data; + gpmc,mux-add-data = <0>; gpmc,cs-on-ns = <0>; gpmc,cs-rd-off-ns = <42>; gpmc,cs-wr-off-ns = <36>;
arch/arm/boot/dts/omap3-overo-tobiduo-common.dtsi +1 -1
@@ -25,7 +25,7 @@ compatible = "smsc,lan9221","smsc,lan9115"; bank-width = <2>; - gpmc,mux-add-data; + gpmc,mux-add-data = <0>; gpmc,cs-on-ns = <0>; gpmc,cs-rd-off-ns = <42>; gpmc,cs-wr-off-ns = <36>;
arch/arm/kernel/stacktrace.c +1 -2
@@ -51,8 +51,7 @@ int notrace unwind_frame(struct stackframe *frame) frame->sp = frame->fp; frame->fp = *(unsigned long *)(fp); - frame->pc = frame->lr; - frame->lr = *(unsigned long *)(fp +4 ); + frame->pc = *(unsigned long *)(fp +4 );#else /* check current frame pointer is within bounds */ if (fp < low +12 || fp > high -4 )
arch/arm/mm/Kconfig +1 -1
@@ -724,7 +724,7 @@ config CPU_BIG_ENDIAN config CPU_ENDIAN_BE8 bool depends on CPU_BIG_ENDIAN - default CPU_V6 || CPU_V6K || CPU_V7 + default CPU_V6 || CPU_V6K || CPU_V7 || CPU_V7M help Support for the BE-8 (big-endian) mode on ARMv6 and ARMv7 processors.
arch/hexagon/lib/io.c +4 -0
@@ -40,6 +40,7 @@ void __raw_readsw(const void __iomem *addr, void *data, int len) *dst++ = *src; } +EXPORT_SYMBOL (__raw_readsw);/* * __raw_writesw - read words a short at a time
@@ -60,6 +61,7 @@ void __raw_writesw(void __iomem *addr, const void *data, int len) } +EXPORT_SYMBOL (__raw_writesw);/* Pretty sure len is pre-adjusted for the length of the access already */ void __raw_readsl (const void __iomem *addr,void *data,int len)
@@ -75,6 +77,7 @@ void __raw_readsl(const void __iomem *addr, void *data, int len) } +EXPORT_SYMBOL (__raw_readsl);void __raw_writesl (void __iomem *addr,const void *data,int len) {
@@ -89,3 +92,4 @@ void __raw_writesl(void __iomem *addr, const void *data, int len) } +EXPORT_SYMBOL (__raw_writesl);
arch/ia64/Kconfig.debug +1 -1
@@ -41,7 +41,7 @@ config DISABLE_VHPT config IA64_DEBUG_CMPXCHG bool "Turn on compare-and-exchange bug checking (slow!)" - depends on DEBUG_KERNEL + depends on DEBUG_KERNEL && PRINTK help Selecting this option turns on bug checking for the IA-64 compare-and-exchange instructions. This is slow! Itaniums
arch/m68k/Kconfig.machine +1 -0
@@ -184,6 +184,7 @@ config INIT_LCD config MEMORY_RESERVE int "Memory reservation (MiB)" depends on (UCSIMM || UCDIMM) + default 0 help Reserve certain memory regions on 68x328 based boards.
arch/mips/Kconfig +3 -0
@@ -211,6 +211,9 @@ config BCM63XX select SYS_SUPPORTS_32BIT_KERNEL select SYS_SUPPORTS_BIG_ENDIAN select SYS_HAS_EARLY_PRINTK + select SYS_HAS_CPU_BMIPS32_3300 + select SYS_HAS_CPU_BMIPS4350 + select SYS_HAS_CPU_BMIPS4380 select SWAP_IO_SPACE select ARCH_REQUIRE_GPIOLIB select HAVE_CLK
arch/mips/bcm63xx/clk.c +6 -0
@@ -333,6 +333,12 @@ void clk_disable(struct clk *clk)EXPORT_SYMBOL (clk_disable); +struct clk *clk_get_parent (struct clk *clk) +{ +return NULL ; +} +EXPORT_SYMBOL (clk_get_parent); +unsigned long clk_get_rate (struct clk *clk) {return clk->rate;
arch/mips/lantiq/xway/dma.c +9 -5
@@ -21,6 +21,7 @@#include <linux/dma-mapping.h> #include <linux/module.h> #include <linux/clk.h> +#include <linux/delay.h> #include <linux/err.h> #include <lantiq_soc.h>
@@ -39,6 +40,7 @@#define LTQ_DMA_PCTRL 0x44#define LTQ_DMA_IRNEN 0xf4 +#define DMA_ID_CHNR GENMASK(26, 20)/* channel number */ #define DMA_DESCPT BIT(3)/* descriptor complete irq */ #define DMA_TX BIT(8)/* TX channel direction */ #define DMA_CHAN_ON BIT(0)/* channel on / off bit */
@@ -49,7 +51,6 @@#define DMA_POLL BIT(31)/* turn on channel polling */ #define DMA_CLK_DIV4 BIT(6)/* polling clock divider */ #define DMA_2W_BURST BIT(1)/* 2 word burst length */ -#define DMA_MAX_CHANNEL 20/* the soc has 20 channels */ #define DMA_ETOP_ENDIANNESS (0xf << 8)/* endianness swap etop channels */ #define DMA_WEIGHT (BIT(17) | BIT(16))/* default channel wheight */
@@ -216,7 +217,7 @@ ltq_dma_init(struct platform_device *pdev) {struct clk *clk;struct resource *res; -unsigned id; +unsigned int id, nchannels;int i; res =platform_get_resource (pdev,IORESOURCE_MEM ,0 );
@@ -232,21 +233,24 @@ ltq_dma_init(struct platform_device *pdev)clk_enable (clk);ltq_dma_w32_mask (0 ,DMA_RESET ,LTQ_DMA_CTRL ); +usleep_range (1 ,10 ); +/* disable all interrupts */ ltq_dma_w32 (0 ,LTQ_DMA_IRNEN );/* reset/configure each channel */ -for (i =0 ; i <DMA_MAX_CHANNEL ; i++) { + id =ltq_dma_r32 (LTQ_DMA_ID ); + nchannels = ((id &DMA_ID_CHNR ) >>20 ); +for (i =0 ; i < nchannels; i++) {ltq_dma_w32 (i,LTQ_DMA_CS );ltq_dma_w32 (DMA_CHAN_RST ,LTQ_DMA_CCTRL );ltq_dma_w32 (DMA_POLL |DMA_CLK_DIV4 ,LTQ_DMA_CPOLL );ltq_dma_w32_mask (DMA_CHAN_ON ,0 ,LTQ_DMA_CCTRL ); } - id =ltq_dma_r32 (LTQ_DMA_ID );dev_info (&pdev->dev,"Init done - hw rev: %X, ports: %d, channels: %d\n" , - id &0x1f , (id >>16 ) &0xf , id >>20 ); + id &0x1f , (id >>16 ) &0xf , nchannels);return 0 ; }
arch/mips/sni/time.c +2 -2
@@ -18,14 +18,14 @@ static int a20r_set_periodic(struct clock_event_device *evt) { *(volatile u8 *)(A20R_PT_CLOCK_BASE +12 ) =0x34 ;wmb (); - *(volatile u8 *)(A20R_PT_CLOCK_BASE +0 ) =SNI_COUNTER0_DIV ; + *(volatile u8 *)(A20R_PT_CLOCK_BASE +0 ) =SNI_COUNTER0_DIV &0xff ;wmb (); *(volatile u8 *)(A20R_PT_CLOCK_BASE +0 ) =SNI_COUNTER0_DIV >>8 ;wmb (); *(volatile u8 *)(A20R_PT_CLOCK_BASE +12 ) =0xb4 ;wmb (); - *(volatile u8 *)(A20R_PT_CLOCK_BASE +8 ) =SNI_COUNTER2_DIV ; + *(volatile u8 *)(A20R_PT_CLOCK_BASE +8 ) =SNI_COUNTER2_DIV &0xff ;wmb (); *(volatile u8 *)(A20R_PT_CLOCK_BASE +8 ) =SNI_COUNTER2_DIV >>8 ;wmb ();
arch/parisc/kernel/entry.S +2 -2
@@ -1849,8 +1849,8 @@ syscall_restore: LDREG TI_TASK-THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r1 /* Are we being ptraced? */ - ldw TASK_FLAGS(%r1),%r19 - ldi _TIF_SYSCALL_TRACE_MASK,%r2 + LDREG TI_FLAGS-THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r19 + ldi _TIF_SINGLESTEP|_TIF_BLOCKSTEP,%r2 and,COND(=) %r19,%r2,%r0 b,n syscall_restore_rfi
arch/parisc/kernel/smp.c +17 -2
@@ -32,6 +32,7 @@#include <linux/bitops.h> #include <linux/ftrace.h> #include <linux/cpu.h> +#include <linux/kgdb.h> #include <linux/atomic.h> #include <asm/current.h>
@@ -74,7 +75,10 @@ enum ipi_message_type {IPI_CALL_FUNC ,IPI_CPU_START ,IPI_CPU_STOP , - IPI_CPU_TEST +IPI_CPU_TEST , +#ifdef CONFIG_KGDB + IPI_ENTER_KGDB, +#endif };
@@ -170,7 +174,12 @@ ipi_interrupt(int irq, void *dev_id)case IPI_CPU_TEST :smp_debug (100 ,KERN_DEBUG "CPU%d is alive!\n" , this_cpu);break ; - +#ifdef CONFIG_KGDB +case IPI_ENTER_KGDB : +smp_debug (100 ,KERN_DEBUG "CPU%d ENTER_KGDB\n" , this_cpu); +kgdb_nmicallback (raw_smp_processor_id (),get_irq_regs ()); +break ; +#endif default :printk (KERN_CRIT "Unknown IPI num on CPU%d: %lu\n" , this_cpu, which);
@@ -226,6 +235,12 @@ send_IPI_allbutself(enum ipi_message_type op) } } +#ifdef CONFIG_KGDB +void kgdb_roundup_cpus (void ) +{ +send_IPI_allbutself (IPI_ENTER_KGDB ); +} +#endif inline void smp_send_stop (void ) {send_IPI_allbutself (IPI_CPU_STOP ); }
arch/parisc/mm/init.c +2 -2
@@ -940,9 +940,9 @@ void flush_tlb_all(void) {int do_recycle; -__inc_irq_stat (irq_tlb_count); do_recycle =0 ;spin_lock (&sid_lock); +__inc_irq_stat (irq_tlb_count);if (dirty_space_ids >RECYCLE_THRESHOLD ) {BUG_ON (recycle_inuse);/* FIXME: Use a semaphore/wait queue here */ get_dirty_sids (&recycle_ndirty,recycle_dirty_array);
@@ -961,8 +961,8 @@ void flush_tlb_all(void)#else void flush_tlb_all (void ) { -__inc_irq_stat (irq_tlb_count);spin_lock (&sid_lock); +__inc_irq_stat (irq_tlb_count);flush_tlb_all_local (NULL );recycle_sids ();spin_unlock (&sid_lock);
arch/powerpc/boot/dts/charon.dts +1 -1
@@ -39,7 +39,7 @@ }; }; - memory { + memory@0 { device_type = "memory"; reg = <0x00000000 0x08000000>; // 128MB };
arch/powerpc/boot/dts/digsy_mtc.dts +1 -1
@@ -20,7 +20,7 @@ model = "intercontrol,digsy-mtc"; compatible = "intercontrol,digsy-mtc"; - memory { + memory@0 { reg = <0x00000000 0x02000000>; // 32MB };
arch/powerpc/boot/dts/lite5200.dts +1 -1
@@ -36,7 +36,7 @@ }; }; - memory { + memory@0 { device_type = "memory"; reg = <0x00000000 0x04000000>; // 64MB };
arch/powerpc/boot/dts/lite5200b.dts +1 -1
@@ -35,7 +35,7 @@ led4 { gpios = <&gpio_simple 2 1>; }; }; - memory { + memory@0 { reg = <0x00000000 0x10000000>; // 256MB };
arch/powerpc/boot/dts/media5200.dts +1 -1
@@ -36,7 +36,7 @@ }; }; - memory { + memory@0 { reg = <0x00000000 0x08000000>; // 128MB RAM };
arch/powerpc/boot/dts/mpc5200b.dtsi +1 -1
@@ -37,7 +37,7 @@ }; }; - memory: memory { + memory: memory@0 { device_type = "memory"; reg = <0x00000000 0x04000000>; // 64MB };
arch/powerpc/boot/dts/o2d.dts +1 -1
@@ -16,7 +16,7 @@ model = "ifm,o2d"; compatible = "ifm,o2d"; - memory { + memory@0 { reg = <0x00000000 0x08000000>; // 128MB };
arch/powerpc/boot/dts/o2d.dtsi +1 -1
@@ -23,7 +23,7 @@ model = "ifm,o2d"; compatible = "ifm,o2d"; - memory { + memory@0 { reg = <0x00000000 0x04000000>; // 64MB };
arch/powerpc/boot/dts/o2dnt2.dts +1 -1
@@ -16,7 +16,7 @@ model = "ifm,o2dnt2"; compatible = "ifm,o2d"; - memory { + memory@0 { reg = <0x00000000 0x08000000>; // 128MB };
arch/powerpc/boot/dts/o3dnt.dts +1 -1
@@ -16,7 +16,7 @@ model = "ifm,o3dnt"; compatible = "ifm,o2d"; - memory { + memory@0 { reg = <0x00000000 0x04000000>; // 64MB };
arch/powerpc/boot/dts/pcm032.dts +1 -1
@@ -26,7 +26,7 @@ model = "phytec,pcm032"; compatible = "phytec,pcm032"; - memory { + memory@0 { reg = <0x00000000 0x08000000>; // 128MB };
arch/powerpc/boot/dts/tqm5200.dts +1 -1
@@ -36,7 +36,7 @@ }; }; - memory { + memory@0 { device_type = "memory"; reg = <0x00000000 0x04000000>; // 64MB };
arch/powerpc/sysdev/dcr-low.S +1 -1
@@ -14,7 +14,7 @@ #include <asm/bug.h> #define DCR_ACCESS_PROLOG(table) \ - cmpli cr0,r3,1024; \ + cmplwi cr0,r3,1024; \ rlwinm r3,r3,4,18,27; \ lis r5,table@h; \ ori r5,r5,table@l; \
arch/sh/Kconfig.debug +1 -0
@@ -60,6 +60,7 @@ config DUMP_CODE config DWARF_UNWINDER bool "Enable the DWARF unwinder for stacktraces" + depends on DEBUG_KERNEL select FRAME_POINTER depends on SUPERH32 default n
arch/sh/include/asm/sfp-machine.h +8 -0
@@ -25,6 +25,14 @@#ifndef _SFP_MACHINE_H#define _SFP_MACHINE_H +#ifdef __BIG_ENDIAN__ +#define __BYTE_ORDER __BIG_ENDIAN +#define __LITTLE_ENDIAN 0 +#else +#define __BYTE_ORDER __LITTLE_ENDIAN +#define __BIG_ENDIAN 0 +#endif +#define _FP_W_TYPE_SIZE 32#define _FP_W_TYPE unsigned long#define _FP_WS_TYPE signed long
arch/sh/kernel/cpu/sh4a/smp-shx3.c +3 -2
@@ -78,8 +78,9 @@ static void shx3_prepare_cpus(unsigned int max_cpus)BUILD_BUG_ON (SMP_MSG_NR >=8 );for (i =0 ; i <SMP_MSG_NR ; i++) -request_irq (104 + i, ipi_interrupt_handler, -IRQF_PERCPU ,"IPI" , (void *)(long )i); +if (request_irq (104 + i, ipi_interrupt_handler, +IRQF_PERCPU ,"IPI" , (void *)(long )i)) +pr_err ("Failed to request irq %d\n" , i);for (i =0 ; i < max_cpus; i++)set_cpu_present (i, true);
arch/x86/include/asm/page_64_types.h +1 -1
@@ -15,7 +15,7 @@#define THREAD_SIZE (PAGE_SIZE << THREAD_SIZE_ORDER)#define CURRENT_MASK (~(THREAD_SIZE - 1)) -#define EXCEPTION_STACK_ORDER (0 + KASAN_STACK_ORDER) +#define EXCEPTION_STACK_ORDER (1 + KASAN_STACK_ORDER)#define EXCEPTION_STKSZ (PAGE_SIZE << EXCEPTION_STACK_ORDER)#define DEBUG_STACK_ORDER (EXCEPTION_STACK_ORDER + 1)
arch/x86/kernel/irq.c +3 -1
@@ -283,8 +283,10 @@ void kvm_set_posted_intr_wakeup_handler(void (*handler)(void)) {if (handler) kvm_posted_intr_wakeup_handler = handler; -else +else { kvm_posted_intr_wakeup_handler = dummy_handler; +synchronize_rcu (); + } }EXPORT_SYMBOL_GPL (kvm_set_posted_intr_wakeup_handler);
crypto/pcrypt.c +8 -4
@@ -138,12 +138,14 @@ static void pcrypt_aead_enc(struct padata_priv *padata) {struct pcrypt_request *preq =pcrypt_padata_request (padata);struct aead_request *req =pcrypt_request_ctx (preq); +int ret; - padata->info =crypto_aead_encrypt (req); + ret =crypto_aead_encrypt (req); -if (padata->info == -EINPROGRESS ) +if (ret == -EINPROGRESS )return ; + padata->info = ret;padata_do_serial (padata); }
@@ -180,12 +182,14 @@ static void pcrypt_aead_dec(struct padata_priv *padata) {struct pcrypt_request *preq =pcrypt_padata_request (padata);struct aead_request *req =pcrypt_request_ctx (preq); +int ret; - padata->info =crypto_aead_decrypt (req); + ret =crypto_aead_decrypt (req); -if (padata->info == -EINPROGRESS ) +if (ret == -EINPROGRESS )return ; + padata->info = ret;padata_do_serial (padata); }
drivers/acpi/acpica/acglobal.h +2 -0
@@ -256,6 +256,8 @@ extern struct acpi_bit_register_infoACPI_GLOBAL (u8, acpi_gbl_sleep_type_a);ACPI_GLOBAL (u8, acpi_gbl_sleep_type_b); +ACPI_GLOBAL (u8, acpi_gbl_sleep_type_a_s0); +ACPI_GLOBAL (u8, acpi_gbl_sleep_type_b_s0);/***************************************************************************** *
drivers/acpi/acpica/hwesleep.c +2 -6
@@ -184,17 +184,13 @@ acpi_status acpi_hw_extended_sleep(u8 sleep_state)acpi_status acpi_hw_extended_wake_prep (u8 sleep_state) { -acpi_status status;u8 sleep_type_value;ACPI_FUNCTION_TRACE (hw_extended_wake_prep); - status =acpi_get_sleep_type_data (ACPI_STATE_S0 , - &acpi_gbl_sleep_type_a, - &acpi_gbl_sleep_type_b); -if (ACPI_SUCCESS (status)) { +if (acpi_gbl_sleep_type_a_s0 !=ACPI_SLEEP_TYPE_INVALID ) { sleep_type_value = - ((acpi_gbl_sleep_type_a <<ACPI_X_SLEEP_TYPE_POSITION ) & + ((acpi_gbl_sleep_type_a_s0 <<ACPI_X_SLEEP_TYPE_POSITION ) &ACPI_X_SLEEP_TYPE_MASK ); (void)acpi_write((u64)(sleep_type_value | ACPI_X_SLEEP_ENABLE),
drivers/acpi/acpica/hwsleep.c +4 -7
@@ -217,7 +217,7 @@ acpi_status acpi_hw_legacy_sleep(u8 sleep_state)acpi_status acpi_hw_legacy_wake_prep (u8 sleep_state) { -acpi_status status; +acpi_status status =AE_OK ;struct acpi_bit_register_info *sleep_type_reg_info;struct acpi_bit_register_info *sleep_enable_reg_info;u32 pm1a_control;
@@ -230,10 +230,7 @@ acpi_status acpi_hw_legacy_wake_prep(u8 sleep_state)* This is unclear from the ACPI Spec, but it is required * by some machines. */ - status =acpi_get_sleep_type_data (ACPI_STATE_S0 , - &acpi_gbl_sleep_type_a, - &acpi_gbl_sleep_type_b); -if (ACPI_SUCCESS (status)) { +if (acpi_gbl_sleep_type_a_s0 !=ACPI_SLEEP_TYPE_INVALID ) { sleep_type_reg_info =acpi_hw_get_bit_register_info (ACPI_BITREG_SLEEP_TYPE ); sleep_enable_reg_info =
@@ -254,9 +251,9 @@ acpi_status acpi_hw_legacy_wake_prep(u8 sleep_state)/* Insert the SLP_TYP bits */ - pm1a_control |= (acpi_gbl_sleep_type_a << + pm1a_control |= (acpi_gbl_sleep_type_a_s0 << sleep_type_reg_info->bit_position); - pm1b_control |= (acpi_gbl_sleep_type_b << + pm1b_control |= (acpi_gbl_sleep_type_b_s0 << sleep_type_reg_info->bit_position);/* Write the control registers and ignore any errors */
drivers/acpi/acpica/hwxfsleep.c +7 -0
@@ -372,6 +372,13 @@ acpi_status acpi_enter_sleep_state_prep(u8 sleep_state)return_ACPI_STATUS (status); } + status =acpi_get_sleep_type_data (ACPI_STATE_S0 , + &acpi_gbl_sleep_type_a_s0, + &acpi_gbl_sleep_type_b_s0); +if (ACPI_FAILURE (status)) { + acpi_gbl_sleep_type_a_s0 =ACPI_SLEEP_TYPE_INVALID ; + } +/* Execute the _PTS method (Prepare To Sleep) */ arg_list.count =1 ;
drivers/acpi/battery.c +1 -1
@@ -187,7 +187,7 @@ static int acpi_battery_is_charged(struct acpi_battery *battery)return 1 ;/* fallback to using design values for broken batteries */ -if (battery->design_capacity == battery->capacity_now) +if (battery->design_capacity <= battery->capacity_now)return 1 ;/* we don't do any sort of metric based on percentages */
drivers/android/binder.c +13 -10
@@ -303,6 +303,7 @@ struct binder_proc {struct mm_struct *vma_vm_mm;struct task_struct *tsk;struct files_struct *files; +const struct cred *cred;struct hlist_node deferred_work_node;int deferred_work;void *buffer;
@@ -1419,8 +1420,8 @@ static void binder_transaction(struct binder_proc *proc, return_error =BR_FAILED_REPLY ; goto err_invalid_target_handle; } -if (security_binder_transaction (proc->tsk, - target_proc->tsk) <0 ) { +if (security_binder_transaction (proc->cred, + target_proc->cred) <0 ) { return_error =BR_FAILED_REPLY ; goto err_invalid_target_handle; }
@@ -1493,7 +1494,7 @@ static void binder_transaction(struct binder_proc *proc, t->from = thread; else t->from = NULL; - t->sender_euid =task_euid (proc->tsk); + t->sender_euid = proc->cred->euid; t->to_proc = target_proc; t->to_thread = target_thread; t->code = tr->code;
@@ -1575,8 +1576,8 @@ static void binder_transaction(struct binder_proc *proc, return_error =BR_FAILED_REPLY ; goto err_binder_get_ref_for_node_failed; } -if (security_binder_transfer_binder (proc->tsk, - target_proc->tsk)) { +if (security_binder_transfer_binder (proc->cred, + target_proc->cred)) { return_error =BR_FAILED_REPLY ; goto err_binder_get_ref_for_node_failed; }
@@ -1615,8 +1616,8 @@ static void binder_transaction(struct binder_proc *proc, return_error =BR_FAILED_REPLY ; goto err_binder_get_ref_failed; } -if (security_binder_transfer_binder (proc->tsk, - target_proc->tsk)) { +if (security_binder_transfer_binder (proc->cred, + target_proc->cred)) { return_error =BR_FAILED_REPLY ; goto err_binder_get_ref_failed; }
@@ -1679,8 +1680,8 @@ static void binder_transaction(struct binder_proc *proc, return_error =BR_FAILED_REPLY ; goto err_fget_failed; } -if (security_binder_transfer_file (proc->tsk, - target_proc->tsk, +if (security_binder_transfer_file (proc->cred, + target_proc->cred, file) <0 ) {fput (file); return_error =BR_FAILED_REPLY ;
@@ -2762,7 +2763,7 @@ static int binder_ioctl_set_ctx_mgr(struct file *filp) ret = -EBUSY ; goto out; } - ret =security_binder_set_context_mgr (proc->tsk); + ret =security_binder_set_context_mgr (proc->cred);if (ret <0 ) goto out;if (uid_valid (binder_context_mgr_uid)) {
@@ -3015,6 +3016,7 @@ static int binder_open(struct inode *nodp, struct file *filp)return -ENOMEM ;get_task_struct (current->group_leader); proc->tsk = current->group_leader; + proc->cred =get_cred (filp->f_cred);INIT_LIST_HEAD (&proc->todo);init_waitqueue_head (&proc->wait); proc->default_priority =task_nice (current);
@@ -3220,6 +3222,7 @@ static void binder_deferred_release(struct binder_proc *proc) }put_task_struct (proc->tsk); +put_cred (proc->cred); binder_debug(BINDER_DEBUG_OPEN_CLOSE, "%s: %d threads %d, nodes %d (ref %d), refs %d, active transactions %d, buffers %d, pages %d\n",
drivers/ata/libata-eh.c +8 -0
@@ -114,6 +114,12 @@ static const unsigned long ata_eh_identify_timeouts[] = { ULONG_MAX, }; +static const unsigned long ata_eh_revalidate_timeouts[] = { +15000 ,/* Some drives are slow to read log pages when waking-up */ +15000 ,/* combined time till here is enough even for media access */ +ULONG_MAX , +}; +static const unsigned long ata_eh_flush_timeouts[] = {15000 ,/* be generous with flush */ 15000 ,/* ditto */
@@ -150,6 +156,8 @@ static const struct ata_eh_cmd_timeout_ent ata_eh_cmd_timeout_table[ATA_EH_CMD_TIMEOUT_TABLE_SIZE] = { { .commands = CMDS(ATA_CMD_ID_ATA, ATA_CMD_ID_ATAPI), .timeouts = ata_eh_identify_timeouts, }, + { .commands = CMDS(ATA_CMD_READ_LOG_EXT, ATA_CMD_READ_LOG_DMA_EXT), + .timeouts = ata_eh_revalidate_timeouts, }, { .commands = CMDS(ATA_CMD_READ_NATIVE_MAX, ATA_CMD_READ_NATIVE_MAX_EXT), .timeouts = ata_eh_other_timeouts, }, { .commands = CMDS(ATA_CMD_SET_MAX, ATA_CMD_SET_MAX_EXT),
drivers/cpuidle/sysfs.c +4 -1
@@ -413,6 +413,7 @@ static int cpuidle_add_state_sysfs(struct cpuidle_device *device) &kdev->kobj, "state%d", i);if (ret) {kobject_put (&kobj->kobj); +kfree (kobj); goto error_state; }kobject_uevent (&kobj->kobj,KOBJ_ADD );
@@ -543,6 +544,7 @@ static int cpuidle_add_driver_sysfs(struct cpuidle_device *dev) &kdev->kobj, "driver");if (ret) {kobject_put (&kdrv->kobj); +kfree (kdrv);return ret; }
@@ -629,7 +631,6 @@ int cpuidle_add_sysfs(struct cpuidle_device *dev)if (!kdev)return -ENOMEM ; kdev->dev = dev; - dev->kobj_dev = kdev;init_completion (&kdev->kobj_unregister);
@@ -637,9 +638,11 @@ int cpuidle_add_sysfs(struct cpuidle_device *dev) "cpuidle");if (error) {kobject_put (&kdev->kobj); +kfree (kdev);return error; } + dev->kobj_dev = kdev;kobject_uevent (&kdev->kobj,KOBJ_ADD );return 0 ;
drivers/crypto/qat/qat_common/adf_pf2vf_msg.c +7 -0
@@ -218,6 +218,13 @@ static int __adf_iov_putmsg(struct adf_accel_dev *accel_dev, u32 msg, u8 vf_nr) val =ADF_CSR_RD (pmisc_bar_addr, pf2vf_offset); }while ((val & int_bit) && (count++ <ADF_IOV_MSG_ACK_MAX_RETRY )); +if (val != msg) { +dev_dbg (&GET_DEV (accel_dev), +"Collision - PFVF CSR overwritten by remote function\n" ); + ret = -EIO ; + goto out; + } +if (val & int_bit) {dev_dbg (&GET_DEV (accel_dev),"ACK not received from remote\n" ); val &= ~int_bit;
drivers/dma/at_xdmac.c +1 -1
@@ -156,7 +156,7 @@#define AT_XDMAC_CC_WRIP (0x1 << 23)/* Write in Progress (read only) */ #define AT_XDMAC_CC_WRIP_DONE (0x0 << 23)#define AT_XDMAC_CC_WRIP_IN_PROGRESS (0x1 << 23) -#define AT_XDMAC_CC_PERID (i) (0x7f & (i) << 24)/* Channel Peripheral Identifier */ +#define AT_XDMAC_CC_PERID (i) ((0x7f & (i)) << 24)/* Channel Peripheral Identifier */ #define AT_XDMAC_CDS_MSP 0x2C/* Channel Data Stride Memory Set Pattern */ #define AT_XDMAC_CSUS 0x30/* Channel Source Microblock Stride */ #define AT_XDMAC_CDUS 0x34/* Channel Destination Microblock Stride */
drivers/edac/sb_edac.c +1 -1
@@ -848,7 +848,7 @@ static u64 haswell_get_tohm(struct sbridge_pvt *pvt)pci_read_config_dword (pvt->info.pci_vtd,HASWELL_TOHM_1 , ®); rc = ((reg <<6 ) | rc) <<26 ; -return rc |0x1ffffff ; +return rc |0x3ffffff ; }static u64 haswell_rir_limit (u32 reg)
drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c +1 -0
@@ -835,6 +835,7 @@ static int amdgpu_connector_vga_get_modes(struct drm_connector *connector)amdgpu_connector_get_edid (connector); ret =amdgpu_connector_ddc_get_modes (connector); +amdgpu_get_native_mode (connector);return ret; }
drivers/gpu/drm/msm/msm_gem.c +2 -2
@@ -651,7 +651,7 @@ struct drm_gem_object *msm_gem_new(struct drm_device *dev, ret =msm_gem_new_impl (dev, size, flags, &obj);if (ret) - goto fail; +return ERR_PTR (ret);if (use_pages (obj)) { ret =drm_gem_object_init (dev, obj, size);
@@ -687,7 +687,7 @@ struct drm_gem_object *msm_gem_import(struct drm_device *dev, ret =msm_gem_new_impl (dev, size,MSM_BO_WC , &obj);if (ret) - goto fail; +return ERR_PTR (ret);drm_gem_private_object_init (dev, obj, size);
drivers/gpu/drm/udl/udl_connector.c +1 -1
@@ -37,7 +37,7 @@ static u8 *udl_get_edid(struct udl_device *udl) ret =usb_control_msg (udl->udev,usb_rcvctrlpipe (udl->udev,0 ), (0x02 ), (0x80 | (0x02 <<5 )), i <<8 ,0xA1 , rbuf,2 , -HZ ); +1000 );if (ret <1 ) {DRM_ERROR ("Read EDID byte %d failed err %x\n" , i, ret); goto error;
drivers/hv/hyperv_vmbus.h +1 -0
@@ -26,6 +26,7 @@#define _HYPERV_VMBUS_H#include <linux/list.h> +#include <linux/bitops.h> #include <asm/sync_bitops.h> #include <linux/atomic.h> #include <linux/hyperv.h>
drivers/hwmon/pmbus/lm25066.c +23 -0
@@ -69,22 +69,27 @@ static struct __coeff lm25066_coeff[5][PSC_NUM_CLASSES + 2] = { [lm25056] = { [PSC_VOLTAGE_IN] = { .m = 16296, + .b = 1343, .R = -2, }, [PSC_CURRENT_IN] = { .m = 13797, + .b = -1833, .R = -2, }, [PSC_CURRENT_IN_L] = { .m = 6726, + .b = -537, .R = -2, }, [PSC_POWER] = { .m = 5501, + .b = -2908, .R = -3, }, [PSC_POWER_L] = { .m = 26882, + .b = -5646, .R = -4, }, [PSC_TEMPERATURE] = {
@@ -96,26 +101,32 @@ static struct __coeff lm25066_coeff[5][PSC_NUM_CLASSES + 2] = { [lm25066] = { [PSC_VOLTAGE_IN] = { .m = 22070, + .b = -1800, .R = -2, }, [PSC_VOLTAGE_OUT] = { .m = 22070, + .b = -1800, .R = -2, }, [PSC_CURRENT_IN] = { .m = 13661, + .b = -5200, .R = -2, }, [PSC_CURRENT_IN_L] = { .m = 6852, + .b = -3100, .R = -2, }, [PSC_POWER] = { .m = 736, + .b = -3300, .R = -2, }, [PSC_POWER_L] = { .m = 369, + .b = -1900, .R = -2, }, [PSC_TEMPERATURE] = {
@@ -155,26 +166,32 @@ static struct __coeff lm25066_coeff[5][PSC_NUM_CLASSES + 2] = { [lm5064] = { [PSC_VOLTAGE_IN] = { .m = 4611, + .b = -642, .R = -2, }, [PSC_VOLTAGE_OUT] = { .m = 4621, + .b = 423, .R = -2, }, [PSC_CURRENT_IN] = { .m = 10742, + .b = 1552, .R = -2, }, [PSC_CURRENT_IN_L] = { .m = 5456, + .b = 2118, .R = -2, }, [PSC_POWER] = { .m = 1204, + .b = 8524, .R = -3, }, [PSC_POWER_L] = { .m = 612, + .b = 11202, .R = -3, }, [PSC_TEMPERATURE] = {
@@ -184,26 +201,32 @@ static struct __coeff lm25066_coeff[5][PSC_NUM_CLASSES + 2] = { [lm5066] = { [PSC_VOLTAGE_IN] = { .m = 4587, + .b = -1200, .R = -2, }, [PSC_VOLTAGE_OUT] = { .m = 4587, + .b = -2400, .R = -2, }, [PSC_CURRENT_IN] = { .m = 10753, + .b = -1200, .R = -2, }, [PSC_CURRENT_IN_L] = { .m = 5405, + .b = -600, .R = -2, }, [PSC_POWER] = { .m = 1204, + .b = -6000, .R = -3, }, [PSC_POWER_L] = { .m = 605, + .b = -8000, .R = -3, }, [PSC_TEMPERATURE] = {
drivers/iio/dac/ad5446.c +8 -1
@@ -510,8 +510,15 @@ static int ad5622_write(struct ad5446_state *st, unsigned val) {struct i2c_client *client =to_i2c_client (st->dev);__be16 data =cpu_to_be16 (val); +int ret; + + ret =i2c_master_send (client, (char *)&data,sizeof (data)); +if (ret <0 ) +return ret; +if (ret !=sizeof (data)) +return -EIO ; -return i2c_master_send (client, (char *)&data,sizeof (data)); +return 0 ; }/**
drivers/infiniband/hw/mlx4/qp.c +3 -1
@@ -766,8 +766,10 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,if (dev->steering_support ==MLX4_STEERING_MODE_DEVICE_MANAGED ) qp->flags |=MLX4_IB_QP_NETIF ; -else +else { + err = -EINVAL ; goto err; + } } err =set_kernel_sq_size (dev, &init_attr->cap, qp_type, qp);
drivers/input/mouse/elantech.c +13 -0
@@ -435,6 +435,19 @@ static void elantech_report_trackpoint(struct psmouse *psmouse,case 0x16008020U :case 0x26800010U :case 0x36808000U : + +/* +* This firmware misreport coordinates for trackpoint +* occasionally. Discard packets outside of [-127, 127] range +* to prevent cursor jumps. +*/ +if (packet[4 ] ==0x80 || packet[5 ] ==0x80 || + packet[1 ] >>7 == packet[4 ] >>7 || + packet[2 ] >>7 == packet[5 ] >>7 ) { +elantech_debug ("discarding packet [%6ph]\n" , packet); +break ; + + } x = packet[4 ] - (int )((packet[1 ]^0x80 ) <<1 ); y = (int )((packet[2 ]^0x80 ) <<1 ) - packet[5 ];
drivers/input/serio/i8042-x86ia64io.h +14 -0
@@ -276,6 +276,13 @@ static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook S6230"), }, }, + { +/* Fujitsu Lifebook T725 laptop */ + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"FUJITSU" ), + DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK T725"), + }, + }, {/* Fujitsu Lifebook U745 */ .matches = {
@@ -916,6 +923,13 @@ static const struct dmi_system_id __initconst i8042_dmi_notimeout_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK AH544"), }, }, + { +/* Fujitsu Lifebook T725 laptop */ + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"FUJITSU" ), + DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK T725"), + }, + }, {/* Fujitsu U574 laptop */ /* https://bugzilla.kernel.org/show_bug.cgi?id=69731 */
drivers/irqchip/irq-s3c24xx.c +18 -4
@@ -368,11 +368,25 @@ static inline int s3c24xx_handle_intc(struct s3c_irq_intc *intc, asmlinkage void __exception_irq_entry s3c24xx_handle_irq(struct pt_regs *regs) { do { - if (likely(s3c_intc[0])) - if (s3c24xx_handle_intc(s3c_intc[0], regs, 0)) - continue; + /* + * For platform based machines, neither ERR nor NULL can happen here. + * The s3c24xx_handle_irq() will be set as IRQ handler iff this succeeds: + * + * s3c_intc[0] = s3c24xx_init_intc() + * + * If this fails, the next calls to s3c24xx_init_intc() won't be executed. + * + * For DT machine, s3c_init_intc_of() could set the IRQ handler without + * setting s3c_intc[0] only if it was called with num_ctrl=0. There is no + * such code path, so again the s3c_intc[0] will have a valid pointer if + * set_handle_irq() is called. + * + * Therefore in s3c24xx_handle_irq(), the s3c_intc[0] is always something. + */ + if (s3c24xx_handle_intc(s3c_intc[0], regs, 0)) + continue; - if (s3c_intc[2]) + if (!IS_ERR_OR_NULL(s3c_intc[2])) if (s3c24xx_handle_intc(s3c_intc[2], regs, 64)) continue;
drivers/media/i2c/mt9p031.c +27 -1
@@ -81,7 +81,9 @@#define MT9P031_PIXEL_CLOCK_INVERT (1 << 15)#define MT9P031_PIXEL_CLOCK_SHIFT (n) ((n) << 8)#define MT9P031_PIXEL_CLOCK_DIVIDE (n) ((n) << 0) -#define MT9P031_FRAME_RESTART 0x0b +#define MT9P031_RESTART 0x0b +#define MT9P031_FRAME_PAUSE_RESTART (1 << 1) +#define MT9P031_FRAME_RESTART (1 << 0)#define MT9P031_SHUTTER_DELAY 0x0c#define MT9P031_RST 0x0d#define MT9P031_RST_ENABLE 1
@@ -448,9 +450,23 @@ static int mt9p031_set_params(struct mt9p031 *mt9p031)static int mt9p031_s_stream (struct v4l2_subdev *subdev,int enable) {struct mt9p031 *mt9p031 =to_mt9p031 (subdev); +struct i2c_client *client =v4l2_get_subdevdata (subdev); +int val;int ret;if (!enable) { +/* enable pause restart */ + val =MT9P031_FRAME_PAUSE_RESTART ; + ret =mt9p031_write (client,MT9P031_RESTART , val); +if (ret <0 ) +return ret; + +/* enable restart + keep pause restart set */ + val |=MT9P031_FRAME_RESTART ; + ret =mt9p031_write (client,MT9P031_RESTART , val); +if (ret <0 ) +return ret; +/* Stop sensor readout */ ret =mt9p031_set_output_control (mt9p031,MT9P031_OUTPUT_CONTROL_CEN ,0 );
@@ -470,6 +486,16 @@ static int mt9p031_s_stream(struct v4l2_subdev *subdev, int enable)if (ret <0 )return ret; +/* +* - clear pause restart +* - don't clear restart as clearing restart manually can cause +* undefined behavior +*/ + val =MT9P031_FRAME_RESTART ; + ret =mt9p031_write (client,MT9P031_RESTART , val); +if (ret <0 ) +return ret; +return mt9p031_pll_enable (mt9p031); }
drivers/media/pci/netup_unidvb/netup_unidvb_core.c +16 -11
@@ -253,19 +253,24 @@ static irqreturn_t netup_unidvb_isr(int irq, void *dev_id)if ((reg40 &AVL_IRQ_ASSERTED ) !=0 ) {/* IRQ is being signaled */ reg_isr =readw (ndev->bmmio0 +REG_ISR ); -if (reg_isr &NETUP_UNIDVB_IRQ_I2C0 ) { - iret =netup_i2c_interrupt (&ndev->i2c[0 ]); - }else if (reg_isr &NETUP_UNIDVB_IRQ_I2C1 ) { - iret =netup_i2c_interrupt (&ndev->i2c[1 ]); - }else if (reg_isr &NETUP_UNIDVB_IRQ_SPI ) { +if (reg_isr &NETUP_UNIDVB_IRQ_SPI ) iret =netup_spi_interrupt (ndev->spi); - }else if (reg_isr &NETUP_UNIDVB_IRQ_DMA1 ) { - iret =netup_dma_interrupt (&ndev->dma[0 ]); - }else if (reg_isr &NETUP_UNIDVB_IRQ_DMA2 ) { - iret =netup_dma_interrupt (&ndev->dma[1 ]); - }else if (reg_isr &NETUP_UNIDVB_IRQ_CI ) { - iret =netup_ci_interrupt (ndev); +else if (!ndev->old_fw) { +if (reg_isr &NETUP_UNIDVB_IRQ_I2C0 ) { + iret =netup_i2c_interrupt (&ndev->i2c[0 ]); + }else if (reg_isr &NETUP_UNIDVB_IRQ_I2C1 ) { + iret =netup_i2c_interrupt (&ndev->i2c[1 ]); + }else if (reg_isr &NETUP_UNIDVB_IRQ_DMA1 ) { + iret =netup_dma_interrupt (&ndev->dma[0 ]); + }else if (reg_isr &NETUP_UNIDVB_IRQ_DMA2 ) { + iret =netup_dma_interrupt (&ndev->dma[1 ]); + }else if (reg_isr &NETUP_UNIDVB_IRQ_CI ) { + iret =netup_ci_interrupt (ndev); + }else { + goto err; + } }else { +err:dev_err (&pci_dev->dev,"%s(): unknown interrupt 0x%x\n" , __func__, reg_isr);
drivers/media/platform/s5p-mfc/s5p_mfc.c +1 -1
@@ -1102,7 +1102,7 @@ static int s5p_mfc_probe(struct platform_device *pdev)spin_lock_init (&dev->condlock); dev->plat_dev = pdev;if (!dev->plat_dev) { -dev_err (&pdev->dev,"No platform data specified\n" ); +mfc_err ("No platform data specified\n" );return -ENODEV ; }
drivers/media/radio/si470x/radio-si470x-i2c.c +1 -1
@@ -24,7 +24,7 @@/* driver definitions */ #define DRIVER_AUTHOR "Joonyoung Shim <[email protected]>"; -#define DRIVER_CARD "Silicon Labs Si470x FM Radio Receiver" +#define DRIVER_CARD "Silicon Labs Si470x FM Radio"#define DRIVER_DESC "I2C radio driver for Si470x FM Radio Receivers"#define DRIVER_VERSION "1.0.2"
drivers/media/radio/si470x/radio-si470x-usb.c +1 -1
@@ -29,7 +29,7 @@/* driver definitions */ #define DRIVER_AUTHOR "Tobias Lorenz <[email protected]>" -#define DRIVER_CARD "Silicon Labs Si470x FM Radio Receiver" +#define DRIVER_CARD "Silicon Labs Si470x FM Radio"#define DRIVER_DESC "USB radio driver for Si470x FM Radio Receivers"#define DRIVER_VERSION "1.0.10"
drivers/media/rc/ite-cir.c +1 -1
@@ -299,7 +299,7 @@ static irqreturn_t ite_cir_isr(int irq, void *data) }/* check for the receive interrupt */ -if (iflags &ITE_IRQ_RX_FIFO ) { +if (iflags & (ITE_IRQ_RX_FIFO |ITE_IRQ_RX_FIFO_OVERRUN )) {/* read the FIFO bytes */ rx_bytes = dev->params.get_rx_bytes(dev, rx_buf,
drivers/media/rc/mceusb.c +1 -0
@@ -1079,6 +1079,7 @@ static void mceusb_dev_recv(struct urb *urb)case -ECONNRESET :case -ENOENT :case -EILSEQ : +case -EPROTO :case -ESHUTDOWN :usb_unlink_urb (urb);return ;
drivers/media/usb/dvb-usb/az6027.c +1 -0
@@ -394,6 +394,7 @@ static struct rc_map_table rc_map_az6027_table[] = {/* remote control stuff (does not work with my box) */ static int az6027_rc_query (struct dvb_usb_device *d,u32 *event,int *state) { + *state =REMOTE_NO_KEY_PRESSED ;return 0 ; }
drivers/media/usb/dvb-usb/dibusb-common.c +1 -1
@@ -182,7 +182,7 @@ int dibusb_read_eeprom_byte(struct dvb_usb_device *d, u8 offs, u8 *val)u8 *buf;int rc; - buf =kmalloc (2 ,GFP_KERNEL ); + buf =kzalloc (2 ,GFP_KERNEL );if (!buf)return -ENOMEM ;
drivers/media/usb/uvc/uvc_v4l2.c +5 -2
@@ -436,10 +436,13 @@ static int uvc_v4l2_set_streamparm(struct uvc_streaming *stream,uvc_simplify_fraction (&timeperframe.numerator, &timeperframe.denominator,8 ,333 ); -if (parm->type ==V4L2_BUF_TYPE_VIDEO_CAPTURE ) +if (parm->type ==V4L2_BUF_TYPE_VIDEO_CAPTURE ) { parm->parm.capture.timeperframe = timeperframe; -else + parm->parm.capture.capability =V4L2_CAP_TIMEPERFRAME ; + }else { parm->parm.output.timeperframe = timeperframe; + parm->parm.output.capability =V4L2_CAP_TIMEPERFRAME ; + }return 0 ; }
drivers/memory/fsl_ifc.c +6 -7
@@ -275,7 +275,7 @@ static int fsl_ifc_ctrl_probe(struct platform_device *dev) ret =fsl_ifc_ctrl_init (fsl_ifc_ctrl_dev);if (ret <0 ) - goto err; + goto err_unmap_nandirq;init_waitqueue_head (&fsl_ifc_ctrl_dev->nand_wait);
@@ -284,7 +284,7 @@ static int fsl_ifc_ctrl_probe(struct platform_device *dev)if (ret !=0 ) {dev_err (&dev->dev,"failed to install irq (%d)\n" , fsl_ifc_ctrl_dev->irq); - goto err_irq; + goto err_unmap_nandirq; }if (fsl_ifc_ctrl_dev->nand_irq) {
@@ -293,17 +293,16 @@ static int fsl_ifc_ctrl_probe(struct platform_device *dev)if (ret !=0 ) {dev_err (&dev->dev,"failed to install irq (%d)\n" , fsl_ifc_ctrl_dev->nand_irq); - goto err_nandirq; + goto err_free_irq; } }return 0 ; -err_nandirq: -free_irq (fsl_ifc_ctrl_dev->nand_irq, fsl_ifc_ctrl_dev); -irq_dispose_mapping (fsl_ifc_ctrl_dev->nand_irq); -err_irq: +err_free_irq:free_irq (fsl_ifc_ctrl_dev->irq, fsl_ifc_ctrl_dev); +err_unmap_nandirq: +irq_dispose_mapping (fsl_ifc_ctrl_dev->nand_irq);irq_dispose_mapping (fsl_ifc_ctrl_dev->irq); err:return ret;
drivers/memstick/core/ms_block.c +1 -1
@@ -1730,7 +1730,7 @@ static int msb_init_card(struct memstick_dev *card) msb->pages_in_block = boot_block->attr.block_size *2 ; msb->block_size = msb->page_size * msb->pages_in_block; -if (msb->page_size >PAGE_SIZE ) { +if ((size_t )msb->page_size >PAGE_SIZE ) {/* this isn't supported by linux at all, anyway*/ dbg ("device page %d size isn't supported" , msb->page_size);return -EINVAL ;
drivers/memstick/host/jmb38x_ms.c +1 -1
@@ -905,7 +905,7 @@ static struct memstick_host *jmb38x_ms_alloc_host(struct jmb38x_ms *jm, int cnt)iounmap (host->addr); err_out_free: -kfree (msh); +memstick_free_host (msh);return NULL ; }
drivers/memstick/host/r592.c +4 -4
@@ -842,15 +842,15 @@ static void r592_remove(struct pci_dev *pdev) }memstick_remove_host (dev->host); +if (dev->dummy_dma_page) +dma_free_coherent (&pdev->dev,PAGE_SIZE , dev->dummy_dma_page, + dev->dummy_dma_page_physical_address); +free_irq (dev->irq, dev);iounmap (dev->mmio);pci_release_regions (pdev);pci_disable_device (pdev);memstick_free_host (dev->host); - -if (dev->dummy_dma_page) -dma_free_coherent (&pdev->dev,PAGE_SIZE , dev->dummy_dma_page, - dev->dummy_dma_page_physical_address); }#ifdef CONFIG_PM_SLEEP
drivers/mmc/host/Kconfig +1 -1
@@ -377,7 +377,7 @@ config MMC_OMAP_HS config MMC_WBSD tristate "Winbond W83L51xD SD/MMC Card Interface support" - depends on ISA_DMA_API + depends on ISA_DMA_API && !M68K help This selects the Winbond(R) W83L51xD Secure digital and Multimedia card Interface.
drivers/mmc/host/dw_mmc.c +2 -1
@@ -1763,7 +1763,8 @@ static void dw_mci_tasklet_func(unsigned long priv)* delayed. Allowing the transfer to take place * avoids races and keeps things simple. */ -if (err != -ETIMEDOUT ) { +if (err != -ETIMEDOUT && + host->dir_status ==DW_MCI_RECV_STATUS ) { state =STATE_SENDING_DATA ;continue ; }
drivers/net/bonding/bond_sysfs_slave.c +11 -25
@@ -112,15 +112,15 @@ static ssize_t ad_partner_oper_port_state_show(struct slave *slave, char *buf) }static SLAVE_ATTR_RO (ad_partner_oper_port_state); -static const struct slave_attribute *slave_attrs[] = { - &slave_attr_state, - &slave_attr_mii_status, - &slave_attr_link_failure_count, - &slave_attr_perm_hwaddr, - &slave_attr_queue_id, - &slave_attr_ad_aggregator_id, - &slave_attr_ad_actor_oper_port_state, - &slave_attr_ad_partner_oper_port_state, +static const struct attribute *slave_attrs[] = { + &slave_attr_state.attr, + &slave_attr_mii_status.attr, + &slave_attr_link_failure_count.attr, + &slave_attr_perm_hwaddr.attr, + &slave_attr_queue_id.attr, + &slave_attr_ad_aggregator_id.attr, + &slave_attr_ad_actor_oper_port_state.attr, + &slave_attr_ad_partner_oper_port_state.attr,NULL };
@@ -141,24 +141,10 @@ const struct sysfs_ops slave_sysfs_ops = {int bond_sysfs_slave_add (struct slave *slave) { -const struct slave_attribute **a; -int err; - -for (a = slave_attrs; *a; ++a) { - err =sysfs_create_file (&slave->kobj, &((*a)->attr)); -if (err) { -kobject_put (&slave->kobj); -return err; - } - } - -return 0 ; +return sysfs_create_files (&slave->kobj, slave_attrs); }void bond_sysfs_slave_del (struct slave *slave) { -const struct slave_attribute **a; - -for (a = slave_attrs; *a; ++a) -sysfs_remove_file (&slave->kobj, &((*a)->attr)); +sysfs_remove_files (&slave->kobj, slave_attrs); }
drivers/net/ethernet/broadcom/bnx2x/bnx2x_init_ops.h +3 -1
@@ -635,11 +635,13 @@ static int bnx2x_ilt_client_mem_op(struct bnx2x *bp, int cli_num, {int i, rc;struct bnx2x_ilt *ilt =BP_ILT (bp); -struct ilt_client_info *ilt_cli = &ilt->clients[cli_num]; +struct ilt_client_info *ilt_cli;if (!ilt || !ilt->lines)return -1 ; + ilt_cli = &ilt->clients[cli_num]; +if (ilt_cli->flags & (ILT_CLIENT_SKIP_INIT |ILT_CLIENT_SKIP_MEM ))return 0 ;
drivers/net/ethernet/ti/davinci_emac.c +14 -2
@@ -555,8 +555,20 @@ static int emac_set_coalesce(struct net_device *ndev,u32 int_ctrl, num_interrupts =0 ;u32 prescale =0 , addnl_dvdr =1 , coal_intvl =0 ; -if (!coal->rx_coalesce_usecs) -return -EINVAL ; +if (!coal->rx_coalesce_usecs) { + priv->coal_intvl =0 ; + +switch (priv->version) { +case EMAC_VERSION_2 : +emac_ctrl_write (EMAC_DM646X_CMINTCTRL ,0 ); +break ; +default : +emac_ctrl_write (EMAC_CTRL_EWINTTCNT ,0 ); +break ; + } + +return 0 ; + } coal_intvl = coal->rx_coalesce_usecs;
drivers/net/tun.c +5 -0
@@ -821,6 +821,7 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb, struct net_device *dev) {struct tun_struct *tun =netdev_priv (dev);int txq = skb->queue_mapping; +struct netdev_queue *queue;struct tun_file *tfile;u32 numqueues =0 ;
@@ -887,6 +888,10 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb, struct net_device *dev)/* Enqueue packet */ skb_queue_tail (&tfile->socket.sk->sk_receive_queue, skb); +/* NETIF_F_LLTX requires to do our own update of trans_start */ + queue =netdev_get_tx_queue (dev, txq); + queue->trans_start = jiffies; +/* Notify and wake up reader process */ if (tfile->flags &TUN_FASYNC )kill_fasync (&tfile->fasync,SIGIO ,POLL_IN );
drivers/net/vmxnet3/vmxnet3_drv.c +0 -1
@@ -3389,7 +3389,6 @@ vmxnet3_suspend(struct device *device)vmxnet3_free_intr_resources (adapter);netif_device_detach (netdev); -netif_tx_stop_all_queues (netdev);/* Create wake-up filters. */ pmConf = adapter->pm_conf;
drivers/net/wireless/ath/ath6kl/usb.c +6 -1
@@ -340,6 +340,11 @@ static int ath6kl_usb_setup_pipe_resources(struct ath6kl_usb *ar_usb)le16_to_cpu (endpoint->wMaxPacketSize), endpoint->bInterval); } + +/* Ignore broken descriptors. */ +if (usb_endpoint_maxp (endpoint) ==0 ) +continue ; + urbcount =0 ; pipe_num =
@@ -907,7 +912,7 @@ static int ath6kl_usb_submit_ctrl_in(struct ath6kl_usb *ar_usb, req,USB_DIR_IN |USB_TYPE_VENDOR |USB_RECIP_DEVICE , value, index, buf, - size, 2 * HZ); + size, 2000);if (ret <0 ) {ath6kl_warn ("Failed to read usb control message: %d\n" , ret);
drivers/net/wireless/ath/ath9k/main.c +3 -1
@@ -528,8 +528,10 @@ irqreturn_t ath_isr(int irq, void *dev)ath9k_debug_sync_cause (sc, sync_cause); status &= ah->imask;/* discard unasked-for bits */ -if (test_bit (ATH_OP_HW_RESET , &common->op_flags)) +if (test_bit (ATH_OP_HW_RESET , &common->op_flags)) { +ath9k_hw_kill_interrupts (sc->sc_ah);return IRQ_HANDLED ; + }/* * If there are no status bits set, then this interrupt was not
drivers/net/wireless/ath/dfs_pattern_detector.c +6 -4
@@ -182,10 +182,12 @@ static void channel_detector_exit(struct dfs_pattern_detector *dpd,if (cd ==NULL )return ;list_del (&cd->head); -for (i =0 ; i < dpd->num_radar_types; i++) { -struct pri_detector *de = cd->detectors[i]; -if (de !=NULL ) - de->exit (de); +if (cd->detectors) { +for (i =0 ; i < dpd->num_radar_types; i++) { +struct pri_detector *de = cd->detectors[i]; +if (de !=NULL ) + de->exit (de); + } }kfree (cd->detectors);kfree (cd);
drivers/net/wireless/ath/wcn36xx/main.c +3 -1
@@ -127,7 +127,9 @@ static struct ieee80211_supported_band wcn_band_2ghz = { .cap = IEEE80211_HT_CAP_GRN_FLD |IEEE80211_HT_CAP_SGI_20 |IEEE80211_HT_CAP_DSSSCCK40 | - IEEE80211_HT_CAP_LSIG_TXOP_PROT, +IEEE80211_HT_CAP_LSIG_TXOP_PROT | +IEEE80211_HT_CAP_SGI_40 | + IEEE80211_HT_CAP_SUP_WIDTH_20_40, .ht_supported = true, .ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K, .ampdu_density = IEEE80211_HT_MPDU_DENSITY_16,
drivers/net/wireless/b43/phy_g.c +1 -1
@@ -2295,7 +2295,7 @@ static u8 b43_gphy_aci_scan(struct b43_wldev *dev)b43_phy_mask (dev,B43_PHY_G_CRS ,0x7FFF );b43_set_all_gains (dev,3 ,8 ,1 ); - start = (channel -5 >0 ) ? channel -5 :1 ; + start = (channel >5 ) ? channel -5 :1 ; end = (channel +5 <14 ) ? channel +5 :13 ;for (i = start; i <= end; i++) {
drivers/net/wireless/b43legacy/radio.c +1 -1
@@ -299,7 +299,7 @@ u8 b43legacy_radio_aci_scan(struct b43legacy_wldev *dev) & 0x7FFF);b43legacy_set_all_gains (dev,3 ,8 ,1 ); - start = (channel -5 >0 ) ? channel -5 :1 ; + start = (channel >5 ) ? channel -5 :1 ; end = (channel +5 <14 ) ? channel +5 :13 ;for (i = start; i <= end; i++) {
drivers/net/wireless/iwlwifi/mvm/utils.c +3 -0
@@ -923,6 +923,9 @@ bool iwl_mvm_rx_diversity_allowed(struct iwl_mvm *mvm)lockdep_assert_held (&mvm->mutex); +if (iwlmvm_mod_params.power_scheme !=IWL_POWER_SCHEME_CAM ) +return false; +if (num_of_ant (iwl_mvm_get_valid_rx_ant (mvm)) ==1 )return false;
drivers/net/wireless/libertas/if_usb.c +2 -0
@@ -291,6 +291,7 @@ err_add_card:if_usb_reset_device (cardp); dealloc:if_usb_free (cardp); +kfree (cardp); error:return r;
@@ -317,6 +318,7 @@ static void if_usb_disconnect(struct usb_interface *intf)/* Unlink and free urb */ if_usb_free (cardp); +kfree (cardp);usb_set_intfdata (intf,NULL );usb_put_dev (interface_to_usbdev (intf));
drivers/net/wireless/libertas_tf/if_usb.c +2 -0
@@ -240,6 +240,7 @@ static int if_usb_probe(struct usb_interface *intf, dealloc:if_usb_free (cardp); +kfree (cardp); error:lbtf_deb_leave (LBTF_DEB_MAIN );return -ENOMEM ;
@@ -264,6 +265,7 @@ static void if_usb_disconnect(struct usb_interface *intf)/* Unlink and free urb */ if_usb_free (cardp); +kfree (cardp);usb_set_intfdata (intf,NULL );usb_put_dev (interface_to_usbdev (intf));
drivers/net/wireless/mwifiex/11n.c +3 -2
@@ -630,14 +630,15 @@ int mwifiex_send_delba(struct mwifiex_private *priv, int tid, u8 *peer_mac,uint16_t del_ba_param_set;memset (&delba,0 ,sizeof (delba)); - delba.del_ba_param_set =cpu_to_le16 (tid <<DELBA_TID_POS ); - del_ba_param_set =le16_to_cpu (delba.del_ba_param_set); + del_ba_param_set = tid <<DELBA_TID_POS ; +if (initiator) del_ba_param_set |=IEEE80211_DELBA_PARAM_INITIATOR_MASK ;else del_ba_param_set &= ~IEEE80211_DELBA_PARAM_INITIATOR_MASK ; + delba.del_ba_param_set =cpu_to_le16 (del_ba_param_set);memcpy (&delba.peer_mac_addr, peer_mac,ETH_ALEN );/* We don't wait for the response of this command */
drivers/net/wireless/mwifiex/pcie.c +8 -0
@@ -1210,6 +1210,14 @@ mwifiex_pcie_send_data(struct mwifiex_adapter *adapter, struct sk_buff *skb, ret =-1 ; goto done_unmap; } + +/* The firmware (latest version 15.68.19.p21) of the 88W8897 PCIe+USB card +* seems to crash randomly after setting the TX ring write pointer when +* ASPM powersaving is enabled. A workaround seems to be keeping the bus +* busy by reading a random register afterwards. +*/ +mwifiex_read_reg (adapter,PCI_VENDOR_ID , &rx_val); +if ((mwifiex_pcie_txbd_not_full (card)) && tx_param->next_pkt_len) {/* have more packets and TxBD still can hold more */
drivers/net/wireless/mwifiex/usb.c +16 -0
@@ -473,6 +473,22 @@ static int mwifiex_usb_probe(struct usb_interface *intf, } } +switch (card->usb_boot_state) { +case USB8XXX_FW_DNLD : +/* Reject broken descriptors. */ +if (!card->rx_cmd_ep || !card->tx_cmd_ep) +return -ENODEV ; +if (card->bulk_out_maxpktsize ==0 ) +return -ENODEV ; +break ; +case USB8XXX_FW_READY : +/* Assume the driver can handle missing endpoints for now. */ +break ; +default : +WARN_ON (1 ); +return -ENODEV ; + } +usb_set_intfdata (intf, card); ret = mwifiex_add_card(card, &add_remove_card_sem, &usb_ops,
drivers/net/wireless/mwl8k.c +1 -1
@@ -5783,8 +5783,8 @@ static void mwl8k_fw_state_machine(const struct firmware *fw, void *context) fail: priv->fw_state =FW_STATE_ERROR ;complete (&priv->firmware_loading_complete); -device_release_driver (&priv->pdev->dev);mwl8k_release_firmware (priv); +device_release_driver (&priv->pdev->dev); }#define MAX_RESTART_ATTEMPTS 1
drivers/net/xen-netfront.c +8 -0
@@ -1454,6 +1454,10 @@ static int netfront_resume(struct xenbus_device *dev)dev_dbg (&dev->dev,"%s\n" , dev->nodename); +netif_tx_lock_bh (info->netdev); +netif_device_detach (info->netdev); +netif_tx_unlock_bh (info->netdev); +xennet_disconnect_backend (info);return 0 ; }
@@ -2014,6 +2018,10 @@ static int xennet_connect(struct net_device *dev)* domain a kick because we've probably just requeued some * packets. */ +netif_tx_lock_bh (np->netdev); +netif_device_attach (np->netdev); +netif_tx_unlock_bh (np->netdev); +netif_carrier_on (np->netdev);for (j =0 ; j < num_queues; ++j) { queue = &np->queues[j];
drivers/nfc/pn533.c +3 -3
@@ -2592,7 +2592,7 @@ static int pn533_fill_fragment_skbs(struct pn533 *dev, struct sk_buff *skb) frag =pn533_alloc_skb (dev, frag_size);if (!frag) {skb_queue_purge (&dev->fragment_skb); -break ; +return -ENOMEM ; }if (!dev->tgt_mode) {
@@ -2662,7 +2662,7 @@ static int pn533_transceive(struct nfc_dev *nfc_dev,/* jumbo frame ? */ if (skb->len >PN533_CMD_DATAEXCH_DATA_MAXLEN ) { rc =pn533_fill_fragment_skbs (dev, skb); -if (rc <=0 ) +if (rc <0 ) goto error; skb =skb_dequeue (&dev->fragment_skb);
@@ -2734,7 +2734,7 @@ static int pn533_tm_send(struct nfc_dev *nfc_dev, struct sk_buff *skb)/* let's split in multiple chunks if size's too big */ if (skb->len >PN533_CMD_DATAEXCH_DATA_MAXLEN ) { rc =pn533_fill_fragment_skbs (dev, skb); -if (rc <=0 ) +if (rc <0 ) goto error;/* get the first skb */
drivers/pci/msi.c +12 -12
@@ -390,18 +390,6 @@ static void free_msi_irqs(struct pci_dev *dev)for (i =0 ; i < entry->nvec_used; i++)BUG_ON (irq_has_action (entry->irq + i)); -pci_msi_teardown_msi_irqs (dev); - -list_for_each_entry_safe (entry, tmp, msi_list, list) { -if (entry->msi_attrib.is_msix) { -if (list_is_last (&entry->list, msi_list)) -iounmap (entry->mask_base); - } - -list_del (&entry->list); -kfree (entry); - } -if (dev->msi_irq_groups) {sysfs_remove_groups (&dev->dev.kobj, dev->msi_irq_groups); msi_attrs = dev->msi_irq_groups[0 ]->attrs;
@@ -417,6 +405,18 @@ static void free_msi_irqs(struct pci_dev *dev)kfree (dev->msi_irq_groups); dev->msi_irq_groups =NULL ; } + +pci_msi_teardown_msi_irqs (dev); + +list_for_each_entry_safe (entry, tmp, msi_list, list) { +if (entry->msi_attrib.is_msix) { +if (list_is_last (&entry->list, msi_list)) +iounmap (entry->mask_base); + } + +list_del (&entry->list); +free_msi_entry (entry); + } }static void pci_intx_for_msi (struct pci_dev *dev,int enable)
drivers/pci/quirks.c +1 -0
@@ -3169,6 +3169,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0032, quirk_no_bus_reset);DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_ATHEROS ,0x003c , quirk_no_bus_reset);DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_ATHEROS ,0x0033 , quirk_no_bus_reset);DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_ATHEROS ,0x0034 , quirk_no_bus_reset); +DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_ATHEROS ,0x003e , quirk_no_bus_reset);/* * Some TI KeyStone C667X devices do not support bus/hot reset. The PCIESS
drivers/platform/x86/hp_accel.c +2 -0
@@ -377,9 +377,11 @@ static int lis3lv02d_add(struct acpi_device *device)INIT_WORK (&hpled_led.work, delayed_set_status_worker); ret =led_classdev_register (NULL , &hpled_led.led_classdev);if (ret) { +i8042_remove_filter (hp_accel_i8042_filter);lis3lv02d_joystick_disable (&lis3_dev);lis3lv02d_poweroff (&lis3_dev);flush_work (&hpled_led.work); +lis3lv02d_remove_fs (&lis3_dev);return ret; }
drivers/platform/x86/thinkpad_acpi.c +1 -1
@@ -8606,7 +8606,7 @@ static int fan_write_cmd_level(const char *cmd, int *rc)if (strlencmp (cmd,"level auto" ) ==0 ) level =TP_EC_FAN_AUTO ; -else if ((strlencmp (cmd,"level disengaged" ) ==0 ) | +else if ((strlencmp (cmd,"level disengaged" ) ==0 ) || (strlencmp (cmd,"level full-speed" ) ==0 )) level =TP_EC_FAN_FULLSPEED ;else if (sscanf (cmd,"level %d" , &level) !=1 )
drivers/platform/x86/wmi.c +8 -1
@@ -367,7 +367,14 @@ struct acpi_buffer *out)* the WQxx method failed - we should disable collection anyway. */ if ((block->flags &ACPI_WMI_EXPENSIVE ) &&ACPI_SUCCESS (wc_status)) { - status =acpi_execute_simple_method (handle, wc_method,0 ); +/* +* Ignore whether this WCxx call succeeds or not since +* the previously executed WQxx method call might have +* succeeded, and returning the failing status code +* of this call would throw away the result of the WQxx +* call, potentially leaking memory. +*/ +acpi_execute_simple_method (handle, wc_method,0 ); }return status;
drivers/power/max17042_battery.c +6 -2
@@ -246,7 +246,10 @@ static int max17042_get_property(struct power_supply *psy, val->intval = data *625 /8 ;break ;case POWER_SUPPLY_PROP_CAPACITY : - ret =regmap_read (map, MAX17042_RepSOC, &data); +if (chip->pdata->enable_current_sense) + ret =regmap_read (map, MAX17042_RepSOC, &data); +else + ret =regmap_read (map,MAX17042_VFSOC , &data);if (ret <0 )return ret;
@@ -752,7 +755,8 @@ static void max17042_set_soc_threshold(struct max17042_chip *chip, u16 off)regmap_read (map, MAX17042_RepSOC, &soc); soc >>=8 ; soc_tr = (soc + off) <<8 ; - soc_tr |= (soc - off); +if (off < soc) + soc_tr |= soc - off;regmap_write (map, MAX17042_SALRT_Th, soc_tr); }
drivers/power/rt5033_battery.c +1 -1
@@ -63,7 +63,7 @@ static int rt5033_battery_get_watt_prop(struct i2c_client *client,regmap_read (battery->regmap, regh, &msb);regmap_read (battery->regmap, regl, &lsb); - ret = ((msb <<4 ) + (lsb >>4 )) *1250 /1000 ; + ret = ((msb <<4 ) + (lsb >>4 )) *1250 ;return ret; }
drivers/scsi/advansys.c +2 -2
@@ -3370,8 +3370,8 @@ static void asc_prt_adv_board_info(struct seq_file *m, struct Scsi_Host *shost) shost->host_no);seq_printf (m, -" iop_base 0x%lx, cable_detect: %X, err_code %u\n" , - (unsigned long )v->iop_base, +" iop_base 0x%p, cable_detect: %X, err_code %u\n" , + v->iop_base,AdvReadWordRegister (iop_base,IOPW_SCSI_CFG1 ) &CABLE_DETECT , v->err_code);
drivers/scsi/csiostor/csio_lnode.c +1 -1
@@ -611,7 +611,7 @@ csio_ln_vnp_read_cbfn(struct csio_hw *hw, struct csio_mb *mbp)struct fc_els_csp *csp;struct fc_els_cssp *clsp;enum fw_retval retval; -__be32 nport_id; +__be32 nport_id =0 ; retval =FW_CMD_RETVAL_G (ntohl (rsp->alloc_to_len16));if (retval !=FW_SUCCESS ) {
drivers/scsi/dc395x.c +1 -0
@@ -4809,6 +4809,7 @@ static int dc395x_init_one(struct pci_dev *dev, const struct pci_device_id *id)/* initialise the adapter and everything we need */ if (adapter_init (acb, io_port_base, io_port_len, irq)) {dprintkl (KERN_INFO ,"adapter init failed\n" ); + acb =NULL ; goto fail; }
drivers/scsi/lpfc/lpfc_sli.c +1 -0
@@ -17071,6 +17071,7 @@ lpfc_drain_txq(struct lpfc_hba *phba) fail_msg, piocbq->iotag, piocbq->sli4_xritag);list_add_tail (&piocbq->list, &completions); + fail_msg =NULL ; }spin_unlock_irqrestore (&pring->ring_lock, iflags); }
drivers/scsi/qla2xxx/qla_gbl.h +0 -2
@@ -112,7 +112,6 @@ extern int ql2xasynctmfenable;extern int ql2xgffidenable;extern int ql2xenabledif;extern int ql2xenablehba_err_chk; -extern int ql2xtargetreset;extern int ql2xdontresethba;extern uint64_t ql2xmaxlun;extern int ql2xmdcapmask;
@@ -643,7 +642,6 @@ extern void qlafx00_abort_iocb(srb_t *, struct abort_iocb_entry_fx00 *);extern void qlafx00_fxdisc_iocb (srb_t *,struct fxdisc_entry_fx00 *);extern void qlafx00_timer_routine (scsi_qla_host_t *);extern int qlafx00_rescan_isp (scsi_qla_host_t *); -extern int qlafx00_loop_reset (scsi_qla_host_t *vha);/* qla82xx related functions */
drivers/scsi/qla2xxx/qla_mr.c +0 -23
@@ -737,29 +737,6 @@ qlafx00_lun_reset(fc_port_t *fcport, uint64_t l, int tag)return qla2x00_async_tm_cmd (fcport,TCF_LUN_RESET , l, tag); } -int -qlafx00_loop_reset (scsi_qla_host_t *vha) -{ -int ret; -struct fc_port *fcport; -struct qla_hw_data *ha = vha->hw; - -if (ql2xtargetreset) { -list_for_each_entry (fcport, &vha->vp_fcports, list) { -if (fcport->port_type !=FCT_TARGET ) -continue ; - - ret = ha->isp_ops->target_reset (fcport,0 ,0 ); -if (ret !=QLA_SUCCESS ) { -ql_dbg (ql_dbg_taskm, vha,0x803d , -"Bus Reset failed: Reset=%d " -"d_id=%x.\n" , ret, fcport->d_id.b24); - } - } - } -return QLA_SUCCESS ; -} -int qlafx00_iospace_config (struct qla_hw_data *ha) {
drivers/scsi/qla2xxx/qla_os.c +2 -25
@@ -177,12 +177,6 @@ MODULE_PARM_DESC(ql2xdbwr," 0 -- Regular doorbell.\n" " 1 -- CAMRAM doorbell (faster).\n"); -int ql2xtargetreset =1 ; -module_param (ql2xtargetreset, int,S_IRUGO ); -MODULE_PARM_DESC (ql2xtargetreset, -"Enable target reset." -"Default is 1 - use hw defaults." ); -int ql2xgffidenable;module_param (ql2xgffidenable, int,S_IRUGO ); MODULE_PARM_DESC(ql2xgffidenable,
@@ -1315,27 +1309,10 @@ int qla2x00_loop_reset(scsi_qla_host_t *vha) {int ret; -struct fc_port *fcport;struct qla_hw_data *ha = vha->hw; -if (IS_QLAFX00 (ha)) { -return qlafx00_loop_reset (vha); - } - -if (ql2xtargetreset ==1 && ha->flags.enable_target_reset) { -list_for_each_entry (fcport, &vha->vp_fcports, list) { -if (fcport->port_type !=FCT_TARGET ) -continue ; - - ret = ha->isp_ops->target_reset (fcport,0 ,0 ); -if (ret !=QLA_SUCCESS ) { -ql_dbg (ql_dbg_taskm, vha,0x802c , -"Bus Reset failed: Reset=%d " -"d_id=%x.\n" , ret, fcport->d_id.b24); - } - } - } - +if (IS_QLAFX00 (ha)) +return QLA_SUCCESS ;if (ha->flags.enable_lip_full_login && !IS_CNA_CAPABLE (ha)) {atomic_set (&vha->loop_state,LOOP_DOWN );
drivers/sh/maple/maple.c +4 -1
@@ -835,8 +835,10 @@ static int __init maple_bus_init(void) maple_queue_cache =KMEM_CACHE (maple_buffer,SLAB_HWCACHE_ALIGN ); -if (!maple_queue_cache) +if (!maple_queue_cache) { + retval = -ENOMEM ; goto cleanup_bothirqs; + }INIT_LIST_HEAD (&maple_waitq);INIT_LIST_HEAD (&maple_sentq);
@@ -849,6 +851,7 @@ static int __init maple_bus_init(void)if (!mdev[i]) {while (i-- >0 )maple_free_dev (mdev[i]); + retval = -ENOMEM ; goto cleanup_cache; } baseunits[i] = mdev[i];
drivers/spi/spi-pl022.c +3 -2
@@ -1710,12 +1710,13 @@ static int verify_controller_parameters(struct pl022 *pl022,return -EINVAL ; } }else { -if (chip_info->duplex !=SSP_MICROWIRE_CHANNEL_FULL_DUPLEX ) +if (chip_info->duplex !=SSP_MICROWIRE_CHANNEL_FULL_DUPLEX ) {dev_err (&pl022->adev->dev,"Microwire half duplex mode requested," " but this is only available in the" " ST version of PL022\n" ); -return -EINVAL ; +return -EINVAL ; + } } }return 0 ;
drivers/target/target_core_alua.c +0 -1
@@ -1735,7 +1735,6 @@ int core_alua_set_tg_pt_gp_id(pr_err ("Maximum ALUA alua_tg_pt_gps_count:" " 0x0000ffff reached\n" );spin_unlock (&dev->t10_alua.tg_pt_gps_lock); -kmem_cache_free (t10_alua_tg_pt_gp_cache, tg_pt_gp);return -ENOSPC ; } again:
drivers/target/target_core_device.c +2 -0
@@ -800,6 +800,8 @@ struct se_device *target_alloc_device(struct se_hba *hba, const char *name)INIT_LIST_HEAD (&dev->t10_alua.lba_map_list);spin_lock_init (&dev->t10_alua.lba_map_lock); +INIT_WORK (&dev->delayed_cmd_work, target_do_delayed_work); + dev->t10_wwn.t10_dev = dev; dev->t10_alua.t10_dev = dev;
drivers/target/target_core_internal.h +1 -0
@@ -146,6 +146,7 @@ void transport_clear_lun_ref(struct se_lun *);void transport_send_task_abort (struct se_cmd *);sense_reason_t target_cmd_size_check (struct se_cmd *cmd,unsigned int size);void target_qf_do_work (struct work_struct *work); +void target_do_delayed_work (struct work_struct *work);bool target_check_wce (struct se_device *dev);bool target_check_fua (struct se_device *dev);void __target_execute_cmd (struct se_cmd *,bool );
drivers/target/target_core_transport.c +54 -22
144 lines not on this page · raw message
drivers/tty/serial/8250/8250_dw.c +1 -1
@@ -607,7 +607,7 @@ static struct platform_driver dw8250_platform_driver = { .name = "dw-apb-uart", .pm = &dw8250_pm_ops, .of_match_table = dw8250_of_match, - .acpi_match_table = ACPI_PTR(dw8250_acpi_match), + .acpi_match_table = dw8250_acpi_match, }, .probe = dw8250_probe, .remove = dw8250_remove,
drivers/tty/tty_buffer.c +3 -0
@@ -519,6 +519,9 @@ static void flush_to_ldisc(struct work_struct *work)if (!count)break ; head->read += count; + +if (need_resched ()) +cond_resched (); }mutex_unlock (&buf->lock);
drivers/usb/chipidea/core.c +15 -6
@@ -518,7 +518,7 @@ int hw_device_reset(struct ci_hdrc *ci)return 0 ; } -static irqreturn_t ci_irq (int irq,void *data) +static irqreturn_t ci_irq_handler (int irq,void *data) {struct ci_hdrc *ci = data;irqreturn_t ret =IRQ_NONE ;
@@ -571,6 +571,15 @@ static irqreturn_t ci_irq(int irq, void *data)return ret; } +static void ci_irq (struct ci_hdrc *ci) +{ +unsigned long flags; + +local_irq_save (flags); +ci_irq_handler (ci->irq, ci); +local_irq_restore (flags); +} +static int ci_vbus_notifier (struct notifier_block *nb,unsigned long event,void *ptr) {
@@ -584,7 +593,7 @@ static int ci_vbus_notifier(struct notifier_block *nb, unsigned long event, vbus->changed = true; -ci_irq (ci->irq, ci); +ci_irq (ci);return NOTIFY_DONE ; }
@@ -601,7 +610,7 @@ static int ci_id_notifier(struct notifier_block *nb, unsigned long event, id->changed = true; -ci_irq (ci->irq, ci); +ci_irq (ci);return NOTIFY_DONE ; }
@@ -1023,7 +1032,7 @@ static int ci_hdrc_probe(struct platform_device *pdev) }platform_set_drvdata (pdev, ci); - ret =devm_request_irq (dev, ci->irq, ci_irq,IRQF_SHARED , + ret =devm_request_irq (dev, ci->irq, ci_irq_handler,IRQF_SHARED , ci->platdata->name, ci);if (ret) goto stop;
@@ -1138,11 +1147,11 @@ static void ci_extcon_wakeup_int(struct ci_hdrc *ci)if (!IS_ERR (cable_id->edev) && ci->is_otg && (otgsc &OTGSC_IDIE ) && (otgsc &OTGSC_IDIS )) -ci_irq (ci->irq, ci); +ci_irq (ci);if (!IS_ERR (cable_vbus->edev) && ci->is_otg && (otgsc &OTGSC_BSVIE ) && (otgsc &OTGSC_BSVIS )) -ci_irq (ci->irq, ci); +ci_irq (ci); }static int ci_controller_resume (struct device *dev)
drivers/usb/gadget/legacy/hid.c +3 -1
@@ -103,8 +103,10 @@ static int do_config(struct usb_configuration *c)list_for_each_entry (e, &hidg_func_list, node) { e->f =usb_get_function (e->fi); -if (IS_ERR (e->f)) +if (IS_ERR (e->f)) { + status =PTR_ERR (e->f); goto put; + } status =usb_add_function (c, e->f);if (status <0 ) {usb_put_function (e->f);
drivers/usb/host/max3421-hcd.c +5 -20
@@ -121,8 +121,6 @@ struct max3421_hcd {struct task_struct *spi_thread; -struct max3421_hcd *next; -enum max3421_rh_state rh_state;/* lower 16 bits contain port status, upper 16 bits the change mask: */ u32 port_status;
@@ -170,8 +168,6 @@ struct max3421_ep {u8 retransmit;/* packet needs retransmission */ }; -static struct max3421_hcd *max3421_hcd_list; -#define MAX3421_FIFO_SIZE 64#define MAX3421_SPI_DIR_RD 0/* read register from MAX3421 */
@@ -1841,9 +1837,8 @@ max3421_probe(struct spi_device *spi) }set_bit (HCD_FLAG_POLL_RH , &hcd->flags); max3421_hcd =hcd_to_max3421 (hcd); - max3421_hcd->next = max3421_hcd_list; - max3421_hcd_list = max3421_hcd;INIT_LIST_HEAD (&max3421_hcd->ep_list); +spi_set_drvdata (spi, max3421_hcd); max3421_hcd->tx =kmalloc (sizeof (*max3421_hcd->tx),GFP_KERNEL );if (!max3421_hcd->tx) {
@@ -1892,28 +1887,18 @@ error:static int max3421_remove (struct spi_device *spi) { -struct max3421_hcd *max3421_hcd =NULL , **prev; -struct usb_hcd *hcd =NULL ; +struct max3421_hcd *max3421_hcd; +struct usb_hcd *hcd;unsigned long flags; -for (prev = &max3421_hcd_list; *prev; prev = &(*prev)->next) { - max3421_hcd = *prev; - hcd =max3421_to_hcd (max3421_hcd); -if (hcd->self.controller == &spi->dev) -break ; - } -if (!max3421_hcd) { -dev_err (&spi->dev,"no MAX3421 HCD found for SPI device %p\n" , - spi); -return -ENODEV ; - } + max3421_hcd =spi_get_drvdata (spi); + hcd =max3421_to_hcd (max3421_hcd);usb_remove_hcd (hcd);spin_lock_irqsave (&max3421_hcd->lock, flags);kthread_stop (max3421_hcd->spi_thread); - *prev = max3421_hcd->next;spin_unlock_irqrestore (&max3421_hcd->lock, flags);
drivers/usb/host/ohci-tmio.c +1 -1
@@ -199,7 +199,7 @@ static int ohci_hcd_tmio_drv_probe(struct platform_device *dev)if (usb_disabled ())return -ENODEV ; -if (!cell) +if (!cell || !regs || !config || !sram)return -EINVAL ;if (irq <0 )
drivers/usb/host/xhci-hub.c +2 -1
@@ -156,7 +156,6 @@ static void xhci_common_hub_descriptor(struct xhci_hcd *xhci, {u16 temp; - desc->bPwrOn2PwrGood =10 ;/* xhci section 5.4.9 says 20ms max */ desc->bHubContrCurrent =0 ; desc->bNbrPorts = ports;
@@ -190,6 +189,7 @@ static void xhci_usb2_hub_descriptor(struct usb_hcd *hcd, struct xhci_hcd *xhci, desc->bDescriptorType =USB_DT_HUB ; temp =1 + (ports /8 ); desc->bDescLength =USB_DT_HUB_NONVAR_SIZE +2 * temp; + desc->bPwrOn2PwrGood =10 ;/* xhci section 5.4.8 says 20ms */ /* The Device Removable bits are reported on a byte granularity. * If the port doesn't exist within that byte, the bit is set to 0.
@@ -240,6 +240,7 @@ static void xhci_usb3_hub_descriptor(struct usb_hcd *hcd, struct xhci_hcd *xhci,xhci_common_hub_descriptor (xhci, desc, ports); desc->bDescriptorType =USB_DT_SS_HUB ; desc->bDescLength =USB_DT_SS_HUB_SIZE ; + desc->bPwrOn2PwrGood =50 ;/* usb 3.1 may fail if less than 100ms */ /* header decode latency should be zero for roothubs, * see section 4.23.5.2.
drivers/usb/misc/iowarrior.c +2 -6
@@ -96,10 +96,6 @@ struct iowarrior {/* globals */ /*--------------*/ -/* -* USB spec identifies 5 second timeouts. -*/ -#define GET_TIMEOUT 5#define USB_REQ_GET_REPORT 0x01//#if 0 static int usb_get_report(struct usb_device *dev,
@@ -111,7 +107,7 @@ static int usb_get_report(struct usb_device *dev,USB_DIR_IN |USB_TYPE_CLASS |USB_RECIP_INTERFACE , (type <<8 ) + id, inter->desc.bInterfaceNumber, buf, size, - GET_TIMEOUT*HZ); + USB_CTRL_GET_TIMEOUT); }//#endif
@@ -126,7 +122,7 @@ static int usb_set_report(struct usb_interface *intf, unsigned char type,USB_TYPE_CLASS |USB_RECIP_INTERFACE , (type <<8 ) + id, intf->cur_altsetting->desc.bInterfaceNumber, buf, - size, HZ); + size, 1000); }/*---------------------*/
drivers/usb/musb/tusb6010.c +5 -0
@@ -1120,6 +1120,11 @@ static int tusb_musb_init(struct musb *musb)/* dma address for async dma */ mem =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); +if (!mem) { +pr_debug ("no async dma resource?\n" ); + ret = -ENODEV ; + goto done; + } musb->async = mem->start;/* dma address for sync dma */
drivers/usb/serial/keyspan.c +7 -8
@@ -2417,22 +2417,22 @@ static int keyspan_port_probe(struct usb_serial_port *port)for (i =0 ; i <ARRAY_SIZE (p_priv->in_buffer); ++i) { p_priv->in_buffer[i] =kzalloc (IN_BUFLEN ,GFP_KERNEL );if (!p_priv->in_buffer[i]) - goto err_in_buffer; + goto err_free_in_buffer; }for (i =0 ; i <ARRAY_SIZE (p_priv->out_buffer); ++i) { p_priv->out_buffer[i] =kzalloc (OUT_BUFLEN ,GFP_KERNEL );if (!p_priv->out_buffer[i]) - goto err_out_buffer; + goto err_free_out_buffer; } p_priv->inack_buffer =kzalloc (INACK_BUFLEN ,GFP_KERNEL );if (!p_priv->inack_buffer) - goto err_inack_buffer; + goto err_free_out_buffer; p_priv->outcont_buffer =kzalloc (OUTCONT_BUFLEN ,GFP_KERNEL );if (!p_priv->outcont_buffer) - goto err_outcont_buffer; + goto err_free_inack_buffer; p_priv->device_details = d_details;
@@ -2478,15 +2478,14 @@ static int keyspan_port_probe(struct usb_serial_port *port)return 0 ; -err_outcont_buffer: +err_free_inack_buffer:kfree (p_priv->inack_buffer); -err_inack_buffer: +err_free_out_buffer:for (i =0 ; i <ARRAY_SIZE (p_priv->out_buffer); ++i)kfree (p_priv->out_buffer[i]); -err_out_buffer: +err_free_in_buffer:for (i =0 ; i <ARRAY_SIZE (p_priv->in_buffer); ++i)kfree (p_priv->in_buffer[i]); -err_in_buffer:kfree (p_priv);return -ENOMEM ;
drivers/video/console/sticon.c +6 -6
@@ -316,13 +316,13 @@ static unsigned long sticon_getxy(struct vc_data *conp, unsigned long pos,static u8 sticon_build_attr (struct vc_data *conp,u8 color,u8 intens,u8 blink,u8 underline,u8 reverse,u8 italic) { -u8 attr = ((color &0x70 ) >>1 ) | ((color &7 )); +u8 fg = color &7 ; +u8 bg = (color &0x70 ) >>4 ; -if (reverse) { - color = ((color >>3 ) &0x7 ) | ((color &0x7 ) <<3 ); - } - -return attr; +if (reverse) +return (fg <<3 ) | bg; +else +return (bg <<3 ) | fg; }static void sticon_invert_region (struct vc_data *conp,u16 *p,int count)
drivers/video/fbdev/chipsfb.c +1 -1
@@ -332,7 +332,7 @@ static struct fb_var_screeninfo chipsfb_var = {static void init_chips (struct fb_info *p,unsigned long addr) { -memset (p->screen_base,0 ,0x100000 ); +fb_memset (p->screen_base,0 ,0x100000 ); p->fix = chipsfb_fix; p->fix.smem_start = addr;
drivers/watchdog/f71808e_wdt.c +3 -1
@@ -225,15 +225,17 @@ static int watchdog_set_timeout(int timeout)mutex_lock (&watchdog.lock); - watchdog.timeout = timeout;if (timeout >0xff ) { watchdog.timer_val =DIV_ROUND_UP (timeout,60 ); watchdog.minutes_mode = true; + timeout = watchdog.timer_val *60 ; }else { watchdog.timer_val = timeout; watchdog.minutes_mode = false; } + watchdog.timeout = timeout; +mutex_unlock (&watchdog.lock);return 0 ;
drivers/xen/xen-pciback/conf_space_capability.c +1 -1
@@ -159,7 +159,7 @@ static void *pm_ctrl_init(struct pci_dev *dev, int offset) } out: -return ERR_PTR (err); +return err ?ERR_PTR (err) :NULL ; }static const struct config_field caplist_pm[] = {
fs/btrfs/async-thread.c +14 -0
@@ -261,6 +261,13 @@ static void run_ordered_work(struct __btrfs_workqueue *wq) ordered_list);if (!test_bit (WORK_DONE_BIT , &work->flags))break ; +/* +* Orders all subsequent loads after reading WORK_DONE_BIT, +* paired with the smp_mb__before_atomic in btrfs_work_helper +* this guarantees that the ordered function will see all +* updates from ordinary work function. +*/ +smp_rmb ();/* * we are going to call the ordered done function, but
@@ -310,6 +317,13 @@ static void normal_work_helper(struct btrfs_work *work)thresh_exec_hook (wq); work->func (work);if (need_order) { +/* +* Ensures all memory accesses done in the work function are +* ordered before setting the WORK_DONE_BIT. Ensuring the thread +* which is going to executed the ordered work sees them. +* Pairs with the smp_rmb in run_ordered_work. +*/ +smp_mb__before_atomic ();set_bit (WORK_DONE_BIT , &work->flags);run_ordered_work (wq); }
fs/btrfs/tree-log.c +3 -1
@@ -2207,7 +2207,9 @@ again:else { ret =find_dir_range (log, path, dirid, key_type, &range_start, &range_end); -if (ret !=0 ) +if (ret <0 ) + goto out; +else if (ret >0 )break ; }
fs/jfs/jfs_mount.c +22 -29
119 lines not on this page · raw message
fs/ocfs2/file.c +6 -2
@@ -490,10 +490,11 @@ int ocfs2_truncate_file(struct inode *inode,* greater than page size, so we have to truncate them * anyway. */ -unmap_mapping_range (inode->i_mapping, new_i_size +PAGE_SIZE -1 ,0 ,1 ); -truncate_inode_pages (inode->i_mapping, new_i_size);if (OCFS2_I (inode)->ip_dyn_features &OCFS2_INLINE_DATA_FL ) { +unmap_mapping_range (inode->i_mapping, + new_i_size +PAGE_SIZE -1 ,0 ,1 ); +truncate_inode_pages (inode->i_mapping, new_i_size); status =ocfs2_truncate_inline (inode, di_bh, new_i_size,i_size_read (inode),1 );if (status)
@@ -512,6 +513,9 @@ int ocfs2_truncate_file(struct inode *inode, goto bail_unlock_sem; } +unmap_mapping_range (inode->i_mapping, new_i_size +PAGE_SIZE -1 ,0 ,1 ); +truncate_inode_pages (inode->i_mapping, new_i_size); + status =ocfs2_commit_truncate (osb, inode, di_bh);if (status <0 ) {mlog_errno (status);
fs/quota/quota_tree.c +15 -0
@@ -416,6 +416,7 @@ static int free_dqentry(struct qtree_mem_dqinfo *info, struct dquot *dquot,quota_error (dquot->dq_sb,"Quota structure has offset to " "other block (%u) than it should (%u)" , blk, (uint)(dquot->dq_off >> info->dqi_blocksize_bits)); + ret = -EIO ; goto out_buf; } ret =read_blk (info, blk, buf);
@@ -481,6 +482,13 @@ static int remove_tree(struct qtree_mem_dqinfo *info, struct dquot *dquot, goto out_buf; } newblk =le32_to_cpu (ref[get_index (info, dquot->dq_id, depth)]); +if (newblk <QT_TREEOFF || newblk >= info->dqi_blocks) { +quota_error (dquot->dq_sb,"Getting block too big (%u >= %u)" , + newblk, info->dqi_blocks); + ret = -EUCLEAN ; + goto out_buf; + } +if (depth == info->dqi_qtree_depth -1 ) { ret =free_dqentry (info, dquot, newblk); newblk =0 ;
@@ -580,6 +588,13 @@ static loff_t find_tree_dqentry(struct qtree_mem_dqinfo *info, blk =le32_to_cpu (ref[get_index (info, dquot->dq_id, depth)]);if (!blk)/* No reference? */ goto out_buf; +if (blk <QT_TREEOFF || blk >= info->dqi_blocks) { +quota_error (dquot->dq_sb,"Getting block too big (%u >= %u)" , + blk, info->dqi_blocks); + ret = -EUCLEAN ; + goto out_buf; + } +if (depth < info->dqi_qtree_depth -1 ) ret =find_tree_dqentry (info, dquot, blk, depth+1 );else
fs/tracefs/inode.c +2 -1
@@ -429,7 +429,8 @@ static struct dentry *__create_dir(const char *name, struct dentry *parent,if (unlikely (!inode))return failed_creating (dentry); - inode->i_mode =S_IFDIR |S_IRWXU |S_IRUGO |S_IXUGO ; +/* Do not set bits for OTH */ + inode->i_mode =S_IFDIR |S_IRWXU |S_IRUSR |S_IRGRP |S_IXUSR |S_IXGRP ; inode->i_op = ops; inode->i_fop = &simple_dir_operations;
include/linux/libata.h +1 -1
@@ -406,7 +406,7 @@ enum {/* This should match the actual table size of * ata_eh_cmd_timeout_table in libata-eh.c. */ - ATA_EH_CMD_TIMEOUT_TABLE_SIZE = 6, + ATA_EH_CMD_TIMEOUT_TABLE_SIZE = 7,/* Horkage types. May be set by libata or controller on drives (some horkage may be drive/controller pair dependent */
include/linux/lsm_hooks.h +16 -16
@@ -1121,22 +1121,22 @@* * @binder_set_context_mgr * Check whether @mgr is allowed to be the binder context manager. -* @mgr contains the task_struct for the task being registered. +* @mgr contains the struct cred for the current binder process. * Return 0 if permission is granted. * @binder_transaction * Check whether @from is allowed to invoke a binder transaction call * to @to. -* @from contains the task_struct for the sending task. -* @to contains the task_struct for the receiving task. -* @binder_transfer_binder +* @from contains the struct cred for the sending process. +* @to contains the struct cred for the receiving process. +* @binder_transfer_binder: * Check whether @from is allowed to transfer a binder reference to @to. -* @from contains the task_struct for the sending task. -* @to contains the task_struct for the receiving task. -* @binder_transfer_file +* @from contains the struct cred for the sending process. +* @to contains the struct cred for the receiving process. +* @binder_transfer_file: * Check whether @from is allowed to transfer @file to @to. -* @from contains the task_struct for the sending task. +* @from contains the struct cred for the sending process. * @file contains the struct file being transferred. -* @to contains the task_struct for the receiving task. +* @to contains the struct cred for the receiving process. * * @ptrace_access_check: * Check permission before allowing the current process to trace the
@@ -1301,13 +1301,13 @@*/ union security_list_options { -int (*binder_set_context_mgr)(struct task_struct *mgr); -int (*binder_transaction)(struct task_struct *from, -struct task_struct *to); -int (*binder_transfer_binder)(struct task_struct *from, -struct task_struct *to); -int (*binder_transfer_file)(struct task_struct *from, -struct task_struct *to, +int (*binder_set_context_mgr)(const struct cred *mgr); +int (*binder_transaction)(const struct cred *from, +const struct cred *to); +int (*binder_transfer_binder)(const struct cred *from, +const struct cred *to); +int (*binder_transfer_file)(const struct cred *from, +const struct cred *to,struct file *file); int (*ptrace_access_check)(struct task_struct *child,
include/linux/security.h +14 -14
@@ -182,13 +182,13 @@ static inline void security_free_mnt_opts(struct security_mnt_opts *opts)extern int security_init (void );/* Security operations */ -int security_binder_set_context_mgr (struct task_struct *mgr); -int security_binder_transaction (struct task_struct *from, -struct task_struct *to); -int security_binder_transfer_binder (struct task_struct *from, -struct task_struct *to); -int security_binder_transfer_file (struct task_struct *from, -struct task_struct *to,struct file *file); +int security_binder_set_context_mgr (const struct cred *mgr); +int security_binder_transaction (const struct cred *from, +const struct cred *to); +int security_binder_transfer_binder (const struct cred *from, +const struct cred *to); +int security_binder_transfer_file (const struct cred *from, +const struct cred *to,struct file *file);int security_ptrace_access_check (struct task_struct *child,unsigned int mode);int security_ptrace_traceme (struct task_struct *parent); int security_capget(struct task_struct *target,
@@ -378,25 +378,25 @@ static inline int security_init(void)return 0 ; } -static inline int security_binder_set_context_mgr (struct task_struct *mgr) +static inline int security_binder_set_context_mgr (const struct cred *mgr) {return 0 ; } -static inline int security_binder_transaction (struct task_struct *from, -struct task_struct *to) +static inline int security_binder_transaction (const struct cred *from, +const struct cred *to) {return 0 ; } -static inline int security_binder_transfer_binder (struct task_struct *from, -struct task_struct *to) +static inline int security_binder_transfer_binder (const struct cred *from, +const struct cred *to) {return 0 ; } -static inline int security_binder_transfer_file (struct task_struct *from, -struct task_struct *to, +static inline int security_binder_transfer_file (const struct cred *from, +const struct cred *to,struct file *file) {return 0 ;
include/net/llc.h +3 -1
@@ -72,7 +72,9 @@ struct llc_sap {static inline struct hlist_head *llc_sk_dev_hash (struct llc_sap *sap,int ifindex) { -return &sap->sk_dev_hash[ifindex %LLC_SK_DEV_HASH_ENTRIES ]; +u32 bucket =hash_32 (ifindex,LLC_SK_DEV_HASH_BITS ); + +return &sap->sk_dev_hash[bucket]; } static inline
include/target/target_core_base.h +4 -2
@@ -787,8 +787,9 @@ struct se_device {atomic_long_t read_bytes;atomic_long_t write_bytes;/* Active commands on this virtual SE device */ -atomic_t simple_cmds; -atomic_t dev_ordered_sync; +atomic_t non_ordered; +bool ordered_sync_in_progress; +atomic_t delayed_cmd_count;atomic_t dev_qf_count;u32 export_count;spinlock_t delayed_cmd_lock;
@@ -811,6 +812,7 @@ struct se_device {struct list_head dev_tmr_list;struct workqueue_struct *tmr_wq;struct work_struct qf_work_queue; +struct work_struct delayed_cmd_work;struct list_head delayed_cmd_list;struct list_head state_list;struct list_head qf_cmd_list;
include/uapi/linux/pci_regs.h +6 -0
@@ -488,6 +488,12 @@#define PCI_EXP_DEVCTL_URRE 0x0008/* Unsupported Request Reporting En. */ #define PCI_EXP_DEVCTL_RELAX_EN 0x0010/* Enable relaxed ordering */ #define PCI_EXP_DEVCTL_PAYLOAD 0x00e0/* Max_Payload_Size */ +#define PCI_EXP_DEVCTL_PAYLOAD_128B 0x0000/* 128 Bytes */ +#define PCI_EXP_DEVCTL_PAYLOAD_256B 0x0020/* 256 Bytes */ +#define PCI_EXP_DEVCTL_PAYLOAD_512B 0x0040/* 512 Bytes */ +#define PCI_EXP_DEVCTL_PAYLOAD_1024B 0x0060/* 1024 Bytes */ +#define PCI_EXP_DEVCTL_PAYLOAD_2048B 0x0080/* 2048 Bytes */ +#define PCI_EXP_DEVCTL_PAYLOAD_4096B 0x00a0/* 4096 Bytes */ #define PCI_EXP_DEVCTL_EXT_TAG 0x0100/* Extended Tag Field Enable */ #define PCI_EXP_DEVCTL_PHANTOM 0x0200/* Phantom Functions Enable */ #define PCI_EXP_DEVCTL_AUX_PME 0x0400/* Auxiliary Power PM Enable */
kernel/power/swap.c +3 -2
@@ -1519,9 +1519,10 @@ end:int swsusp_check (void ) {int error; +void *holder; hib_resume_bdev =blkdev_get_by_dev (swsusp_resume_device, -FMODE_READ ,NULL ); +FMODE_READ |FMODE_EXCL , &holder);if (!IS_ERR (hib_resume_bdev)) {set_blocksize (hib_resume_bdev,PAGE_SIZE );clear_page (swsusp_header);
@@ -1541,7 +1542,7 @@ int swsusp_check(void) put:if (error) -blkdev_put (hib_resume_bdev,FMODE_READ ); +blkdev_put (hib_resume_bdev,FMODE_READ |FMODE_EXCL );else pr_debug ("PM: Image signature found, resuming\n" ); }else {
kernel/sched/core.c +3 -0
@@ -1885,6 +1885,9 @@ out:bool cpus_share_cache (int this_cpu,int that_cpu) { +if (this_cpu == that_cpu) +return true; +return per_cpu (sd_llc_id, this_cpu) ==per_cpu (sd_llc_id, that_cpu); }#endif /* CONFIG_SMP */
kernel/signal.c +2 -15
@@ -1823,16 +1823,6 @@ static inline int may_ptrace_stop(void)return 1 ; } -/* -* Return non-zero if there is a SIGKILL that should be waking us up. -* Called with the siglock held. -*/ -static int sigkill_pending (struct task_struct *tsk) -{ -return sigismember (&tsk->pending.signal,SIGKILL ) || -sigismember (&tsk->signal->shared_pending.signal,SIGKILL ); -} -/* * This must be called with current->sighand->siglock held. *
@@ -1858,15 +1848,10 @@ static void ptrace_stop(int exit_code, int why, int clear_code, siginfo_t *info)* calling arch_ptrace_stop, so we must release it now. * To preserve proper semantics, we must do this before * any signal bookkeeping like checking group_stop_count. -* Meanwhile, a SIGKILL could come in before we retake the -* siglock. That must prevent us from sleeping in TASK_TRACED. -* So after regaining the lock, we must check for SIGKILL. */ spin_unlock_irq (¤t->sighand->siglock);arch_ptrace_stop (exit_code, info);spin_lock_irq (¤t->sighand->siglock); -if (sigkill_pending (current)) -return ; }/*
@@ -1875,6 +1860,8 @@ static void ptrace_stop(int exit_code, int why, int clear_code, siginfo_t *info)* Also, transition to TRACED and updates to ->jobctl should be * atomic with respect to siglock and should be done after the arch * hook as siglock is released and regrabbed across it. +* schedule() will not sleep if there is a pending signal that +* can awaken the task. */ set_current_state (TASK_TRACED );
lib/decompress_unxz.c +1 -1
@@ -167,7 +167,7 @@* memeq and memzero are not used much and any remotely sane implementation * is fast enough. memcpy/memmove speed matters in multi-call mode, but * the kernel image is decompressed in single-call mode, in which only -* memcpy speed can matter and only if there is a lot of uncompressible data +* memmove speed can matter and only if there is a lot of uncompressible data * (LZMA2 stores uncompressible chunks in uncompressed form). Thus, the * functions below should just be kept small; it's probably not worth * optimizing for speed.
lib/xz/xz_dec_lzma2.c +19 -2
@@ -387,7 +387,14 @@ static void dict_uncompressed(struct dictionary *dict, struct xz_buf *b, *left -= copy_size; -memcpy (dict->buf + dict->pos, b->in + b->in_pos, copy_size); +/* +* If doing in-place decompression in single-call mode and the +* uncompressed size of the file is larger than the caller +* thought (i.e. it is invalid input!), the buffers below may +* overlap and cause undefined behavior with memcpy(). +* With valid inputs memcpy() would be fine here. +*/ +memmove (dict->buf + dict->pos, b->in + b->in_pos, copy_size); dict->pos += copy_size;if (dict->full < dict->pos)
@@ -397,7 +404,11 @@ static void dict_uncompressed(struct dictionary *dict, struct xz_buf *b,if (dict->pos == dict->end) dict->pos =0 ; -memcpy (b->out + b->out_pos, b->in + b->in_pos, +/* +* Like above but for multi-call mode: use memmove() +* to avoid undefined behavior with invalid input. +*/ +memmove (b->out + b->out_pos, b->in + b->in_pos, copy_size); }
@@ -421,6 +432,12 @@ static uint32_t dict_flush(struct dictionary *dict, struct xz_buf *b)if (dict->pos == dict->end) dict->pos =0 ; +/* +* These buffers cannot overlap even if doing in-place +* decompression because in multi-call mode dict->buf +* has been allocated by us in this file; it's not +* provided by the caller like in single-call mode. +*/ memcpy (b->out + b->out_pos, dict->buf + dict->start, copy_size); }
lib/xz/xz_dec_stream.c +3 -3
@@ -402,12 +402,12 @@ static enum xz_ret dec_stream_header(struct xz_dec *s)* we will accept other check types too, but then the check won't * be verified and a warning (XZ_UNSUPPORTED_CHECK) will be given. */ +if (s->temp.buf[HEADER_MAGIC_SIZE +1 ] >XZ_CHECK_MAX ) +return XZ_OPTIONS_ERROR ; + s->check_type = s->temp.buf[HEADER_MAGIC_SIZE +1 ];#ifdef XZ_DEC_ANY_CHECK -if (s->check_type >XZ_CHECK_MAX ) -return XZ_OPTIONS_ERROR ; -if (s->check_type >XZ_CHECK_CRC32 )return XZ_UNSUPPORTED_CHECK ;#else
mm/oom_kill.c +3 -0
@@ -761,6 +761,9 @@ void pagefault_out_of_memory(void)if (mem_cgroup_oom_synchronize (true))return ; +if (fatal_signal_pending (current)) +return ; +if (!mutex_trylock (&oom_lock))return ;
mm/slab.h +1 -1
@@ -133,7 +133,7 @@ static inline unsigned long kmem_cache_flags(unsigned long object_size,#define SLAB_CACHE_FLAGS (SLAB_NOLEAKTRACE | SLAB_RECLAIM_ACCOUNT | \ SLAB_TEMPORARY | SLAB_NOTRACK)#else -#define SLAB_CACHE_FLAGS (0) +#define SLAB_CACHE_FLAGS (SLAB_NOLEAKTRACE)#endif #define CACHE_CREATE_MASK (SLAB_CORE_FLAGS | SLAB_DEBUG_FLAGS | SLAB_CACHE_FLAGS)
net/batman-adv/bat_iv_ogm.c +3 -1
@@ -526,8 +526,10 @@ static void batadv_iv_ogm_emit(struct batadv_forw_packet *forw_packet)if (WARN_ON (!forw_packet->if_outgoing)) goto out; -if (WARN_ON (forw_packet->if_outgoing->soft_iface != soft_iface)) +if (forw_packet->if_outgoing->soft_iface != soft_iface) { +pr_warn ("%s: soft interface switch for queued OGM\n" , __func__); goto out; + }if (forw_packet->if_incoming->if_status !=BATADV_IF_ACTIVE ) goto out;
net/batman-adv/bridge_loop_avoidance.c +116 -25
203 lines not on this page · raw message
net/batman-adv/fragmentation.c +27 -14
41 lines not on this page · raw message
net/batman-adv/main.c +32 -12
44 lines not on this page · raw message
sound/core/oss/mixer_oss.c +33 -10
43 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.