Linux 4.9.331
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.9.331 kernel.
All users of the 4.9 kernel series must upgrade.
The updated 4.9.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.9.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
------------
Documentation/ABI/testing/sysfs-bus-iio | 2 Documentation/devicetree/bindings/dma/moxa,moxart-dma.txt | 4 Makefile | 2 arch/arm/Kconfig | 3 arch/arm/Kconfig.debug | 6 arch/arm/boot/dts/exynos4412-origen.dts | 2 arch/arm/boot/dts/imx6dl.dtsi | 3 arch/arm/boot/dts/imx6q.dtsi | 3 arch/arm/boot/dts/imx6qp.dtsi | 6 arch/arm/boot/dts/imx6sl.dtsi | 3 arch/arm/boot/dts/imx7d-sdb.dts | 7 - arch/arm/boot/dts/kirkwood-lsxl.dtsi | 16 -- arch/arm/boot/dts/moxart-uc7112lx.dts | 2 arch/arm/boot/dts/moxart.dtsi | 4 arch/mips/bcm47xx/prom.c | 4 arch/powerpc/boot/dts/fsl/e500v1_power_isa.dtsi | 51 +++++++ arch/powerpc/boot/dts/fsl/mpc8540ads.dts | 2 arch/powerpc/boot/dts/fsl/mpc8541cds.dts | 2 arch/powerpc/boot/dts/fsl/mpc8555cds.dts | 2 arch/powerpc/boot/dts/fsl/mpc8560ads.dts | 2 arch/powerpc/kernel/pci_dn.c | 1 arch/powerpc/math-emu/math_efp.c | 1 arch/sh/include/asm/sections.h | 2 arch/sh/kernel/machvec.c | 10 - arch/um/kernel/um_arch.c | 2 arch/x86/kvm/emulate.c | 2 arch/x86/um/shared/sysdep/syscalls_32.h | 5 arch/x86/um/tls_32.c | 6 drivers/acpi/acpi_video.c | 16 ++ drivers/char/random.c | 22 ++- drivers/clk/bcm/clk-bcm2835.c | 6 drivers/clk/bcm/clk-iproc-pll.c | 95 ++++++-------- drivers/clk/tegra/clk-tegra114.c | 1 drivers/clk/tegra/clk-tegra20.c | 1 drivers/clk/tegra/clk-tegra210.c | 1 drivers/clk/ti/clk-dra7-atl.c | 9 - drivers/dma/ioat/dma.c | 6 drivers/dma/xilinx/xilinx_dma.c | 8 - drivers/firmware/google/gsmi.c | 9 + drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c | 7 - drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 13 - drivers/gpu/drm/drm_ioctl.c | 8 + drivers/gpu/drm/drm_mipi_dsi.c | 1 drivers/hid/hid-roccat.c | 4 drivers/hsi/controllers/omap_ssi_core.c | 1 drivers/hsi/controllers/omap_ssi_port.c | 8 - drivers/iio/adc/at91-sama5d2_adc.c | 2 drivers/iio/dac/ad5593r.c | 46 +++--- drivers/iio/inkern.c | 6 drivers/infiniband/sw/rxe/rxe_qp.c | 10 + drivers/input/joystick/xpad.c | 20 ++ drivers/input/touchscreen/melfas_mip4.c | 2 drivers/iommu/omap-iommu-debug.c | 6 drivers/isdn/mISDN/l1oip.h | 1 drivers/isdn/mISDN/l1oip_core.c | 13 + drivers/media/pci/cx88/cx88-vbi.c | 9 - drivers/media/pci/cx88/cx88-video.c | 43 +++--- drivers/media/platform/exynos4-is/fimc-is.c | 1 drivers/media/platform/xilinx/xilinx-vipp.c | 9 - drivers/memory/of_memory.c | 1 drivers/mfd/intel_soc_pmic_core.c | 1 drivers/mfd/lp8788-irq.c | 3 drivers/mfd/lp8788.c | 12 + drivers/mfd/sm501.c | 7 - drivers/mmc/host/au1xmmc.c | 3 drivers/mmc/host/moxart-mmc.c | 17 -- drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 1 drivers/net/ethernet/freescale/fs_enet/mac-fec.c | 2 drivers/net/usb/qmi_wwan.c | 1 drivers/net/usb/r8152.c | 4 drivers/net/usb/usbnet.c | 7 - drivers/net/wireless/ath/ath10k/mac.c | 54 ++++--- drivers/net/wireless/mac80211_hwsim.c | 2 drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 3 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 18 +- drivers/nvme/host/core.c | 9 - drivers/pci/setup-res.c | 11 + drivers/platform/x86/msi-laptop.c | 11 - drivers/powercap/intel_rapl.c | 3 drivers/regulator/qcom_rpm-regulator.c | 24 +-- drivers/scsi/3w-9xxx.c | 2 drivers/scsi/stex.c | 17 +- drivers/soc/qcom/smem_state.c | 3 drivers/soc/qcom/smsm.c | 20 +- drivers/spi/spi-omap-100k.c | 1 drivers/spi/spi-qup.c | 21 ++- drivers/thermal/intel_powerclamp.c | 4 drivers/tty/serial/8250/8250_port.c | 7 - drivers/tty/serial/jsm/jsm_driver.c | 3 drivers/tty/serial/xilinx_uartps.c | 2 drivers/usb/host/xhci-mem.c | 7 - drivers/usb/misc/idmouse.c | 8 - drivers/usb/mon/mon_bin.c | 5 drivers/usb/musb/musb_gadget.c | 3 drivers/usb/serial/ftdi_sio.c | 3 drivers/usb/serial/qcserial.c | 1 drivers/usb/storage/unusual_devs.h | 6 drivers/usb/storage/unusual_uas.h | 21 +++ drivers/video/fbdev/smscufx.c | 14 +- drivers/video/fbdev/stifb.c | 2 fs/ceph/file.c | 9 - fs/dlm/ast.c | 6 fs/dlm/lock.c | 16 +- fs/ext4/file.c | 6 fs/ext4/inode.c | 7 + fs/ext4/resize.c | 2 fs/ext4/super.c | 3 fs/f2fs/extent_cache.c | 3 fs/inode.c | 7 - fs/nilfs2/inode.c | 20 ++ fs/nilfs2/segment.c | 21 +-- fs/ntfs/super.c | 3 fs/quota/quota_tree.c | 38 +++++ include/linux/ata.h | 39 +++-- include/linux/dynamic_debug.h | 2 include/linux/tcp.h | 2 include/net/ieee802154_netdev.h | 43 ++++++ include/net/sock.h | 2 include/net/tcp.h | 5 include/scsi/scsi_cmnd.h | 2 kernel/gcov/gcc_4_7.c | 18 ++ kernel/trace/ring_buffer.c | 46 ++++++ lib/dynamic_debug.c | 11 + mm/page_alloc.c | 12 + net/bluetooth/hci_sysfs.c | 3 net/bluetooth/l2cap_core.c | 17 +- net/can/bcm.c | 7 - net/ieee802154/socket.c | 46 +++--- net/ipv4/af_inet.c | 2 net/ipv4/tcp.c | 19 +- net/ipv4/tcp_input.c | 2 net/ipv4/tcp_ipv4.c | 13 + net/ipv4/tcp_output.c | 19 +- net/ipv4/udp.c | 6 net/ipv6/tcp_ipv6.c | 11 + net/mac80211/cfg.c | 3 net/openvswitch/datapath.c | 18 +- net/rds/tcp.c | 2 net/xfrm/xfrm_ipcomp.c | 1 scripts/Makefile.extrawarn | 1 scripts/selinux/install_policy.sh | 2 sound/core/pcm_dmaengine.c | 8 - sound/core/rawmidi.c | 2 sound/core/sound_oss.c | 13 + sound/pci/hda/hda_intel.c | 3 sound/soc/fsl/eukrea-tlv320.c | 8 - sound/usb/endpoint.c | 6 tools/perf/util/intel-pt.c | 9 + tools/testing/selftests/net/reuseport_bpf.c | 2 149 files changed, 959 insertions(+), 470 deletions(-)
Adrian Hunter (1):
perf intel-pt: Fix segfault in intel_pt_print_info() with uClibc
Alexander Aring (3):
fs: dlm: fix race between test_bit() and queue_work()
fs: dlm: handle -EBUSY first in lock arg validation
net: ieee802154: return -EINVAL for unknown addr type
Alexander Stein (4):
ARM: dts: imx6q: add missing properties for sram
ARM: dts: imx6dl: add missing properties for sram
ARM: dts: imx6qp: add missing properties for sram
ARM: dts: imx6sl: add missing properties for sram
Andreas Pape (1):
ALSA: dmaengine: increment buffer pointer atomically
Andrew Gaul (1):
r8152: Rate limit overflow messages
Arvid Norlander (1):
ACPI: video: Add Toshiba Satellite/Portege Z830 quirk
Baokun Li (1):
ext4: fix null-ptr-deref in ext4_write_info
Bitterblue Smith (1):
wifi: rtl8xxxu: gen2: Fix mistake in path B IQ calibration
Brian Norris (1):
Revert "drm: bridge: analogix/dp: add panel prepare/unprepare in suspend/resume time"
Cameron Gutman (1):
Input: xpad - fix wireless 360 controller breaking after suspend
Chaitanya Kulkarni (1):
nvme: add new line after variable declatation
Chao Qin (1):
powercap: intel_rapl: fix UBSAN shift-out-of-bounds issue
ChenXiaoSong (1):
ntfs: fix BUG_ON in ntfs_lookup_inode_by_name()
Christophe JAILLET (4):
mmc: au1xmmc: Fix an error handling path in au1xmmc_probe()
mfd: intel_soc_pmic: Fix an error handling path in intel_soc_pmic_i2c_probe()
mfd: lp8788: Fix an error handling path in lp8788_probe()
mfd: lp8788: Fix an error handling path in lp8788_irq_init() and lp8788_irq_init()
Claudiu Beznea (1):
iio: adc: at91-sama5d2_adc: fix AT91_SAMA5D2_MR_TRACKTIM_MAX
Dan Carpenter (3):
wifi: rtl8xxxu: tighten bounds checking in rtl8xxxu_read_efuse()
drivers: serial: jsm: fix some leaks in probe iommu/omap: Fix buffer overflow in debugfs
Daniel Golle (1):
wifi: rt2x00: don't run Rt5592 IQ calibration on MT7620
Dave Jiang (1):
dmaengine: ioat: stop mod_timer from resurrecting deleted timer in __cleanup()
Dmitry Torokhov (1):
ARM: dts: exynos: fix polarity of VBUS GPIO of Origen
Dongliang Mu (2):
fs: fix UAF/GPF bug in nilfs_mdt_destroy
usb: idmouse: fix an uninit-value in idmouse_open
Duoming Zhou (1):
mISDN: fix use-after-free bugs in l1oip timer handlers
Eric Dumazet (2):
tcp: annotate data-race around tcp_md5sig_pool_populated
inet: fully convert sk->sk_rx_dst to RCU rules
Florian Fainelli (1):
clk: iproc: Do not rely on node name for correct PLL setup
Frank Wunderlich (2):
net: usb: qmi_wwan: Add new usb-id for Dell branded EM7455
USB: serial: qcserial: add new usb-id for Dell branded EM7455
Geert Uytterhoeven (1):
ARM: Drop CMDLINE_* dependency on ATAGS
Greg Kroah-Hartman (2):
selinux: use "grep -E" instead of "egrep"
Linux 4.9.331
Guilherme G. Piccoli (1):
firmware: google: Test spinlock on panic path to avoid lockups
Haibo Chen (1):
ARM: dts: imx7d-sdb: config the max pressure for tsc2046
Haimin Zhang (1):
net/ieee802154: fix uninit value bug in dgram_sendmsg
Hans de Goede (2):
platform/x86: msi-laptop: Fix old-ec check for backlight registering platform/x86: msi-laptop: Change DMI match / alias strings to fix module autoloading
Hari Chandrakanthan (1):
wifi: mac80211: allow bw change during channel switch in mesh
Helge Deller (1):
parisc: fbdev/stifb: Align graphics memory size to 4MB
Hongling Zeng (3):
uas: add no-uas quirk for Hiksemi usb_disk
usb-storage: Add Hiksemi USB3-FW to IGNORE_UAS
uas: ignore UAS for Thinkplus chips
Hu Weiwen (1):
ceph: don't truncate file in atomic_open
Huacai Chen (1):
UM: cpuinfo: Fix a warning for CONFIG_CPUMASK_OFFSTACK
Hyunwoo Kim (2):
fbdev: smscufx: Fix use-after-free in ufx_ops_open()
HID: roccat: Fix use-after-free in roccat_read()
Jack Wang (1):
HSI: omap_ssi_port: Fix dma_map_sg error check
Jan Kara (1):
ext4: avoid crash when inline data creation follows DIO write
Jason A. Donenfeld (4):
random: clamp credited irq bits to maximum mixed
random: avoid reading two cache lines on irq randomness
random: restore O_NONBLOCK support
random: use expired timer rather than wq for mixing fast pool
Javier Martinez Canillas (2):
drm: Use size_t type for len variable in drm_copy_field()
drm: Prevent drm_copy_field() to attempt copying a NULL pointer
Jerry Lee 李修賢 (1):
ext4: continue to expand file system when the target size doesn't reach
Jianglei Nie (2):
bnx2x: fix potential memory leak in bnx2x_tpa_stop()
usb: host: xhci: Fix potential memory leak in xhci_alloc_stream_info()
Jiasheng Jiang (1):
mfd: sm501: Add check for platform_driver_register()
Jim Cromie (2):
dyndbg: fix module.dyndbg handling
dyndbg: let query-modname override actual module name
Jinke Han (1):
ext4: place buffer head allocation before handle start
Johan Hovold (1):
USB: serial: ftdi_sio: fix 300 bps rate for SIO
Johannes Berg (1):
wifi: mac80211_hwsim: avoid mac80211 warning on bad rate
Jonathan Cameron (1):
iio: ABI: Fix wrong format of differential capacitance channel ABI.
Kees Cook (2):
sh: machvec: Use char[] for section boundaries
MIPS: BCM47XX: Cast memcmp() of function to (void *)
Khalid Masum (1):
xfrm: Update ipcomp_scratches with NULL when freed
Lalith Rajendran (1):
ext4: make ext4_lazyinit_thread freezable
Letu Ren (1):
scsi: 3w-9xxx: Avoid disabling device if failing to enable it
Liang He (6):
ASoC: eureka-tlv320: Hold reference returned from of_find_xxx API
memory: of: Fix refcount leak bug in of_get_ddr_timings()
soc: qcom: smsm: Fix refcount leak bugs in qcom_smsm_probe()
soc: qcom: smem_state: Add refcounting for the 'state->of_node'
media: exynos4-is: fimc-is: Add of_node_put() when breaking out of loop powerpc/pci_dn: Add missing of_node_put()
Linus Torvalds (1):
scsi: stex: Properly zero out the passthrough command structure
Linus Walleij (1):
regulator: qcom_rpm: Fix circular deferral regression
Lori Hikichi (1):
clk: iproc: Minor tidy up of iproc pll data structures
Luiz Augusto von Dentz (2):
Bluetooth: hci_sysfs: Fix attempting to call device_add multiple times
Bluetooth: L2CAP: Fix user-after-free
Lukas Straub (2):
um: Cleanup syscall_handler_t cast in syscalls_32.h
um: Cleanup compiler warning in arch/x86/um/tls_32.c
Maciej W. Rozycki (1):
PCI: Sanitise firmware BAR assignments behind a PCI-PCI bridge
Martin Liska (1):
gcov: support GCC 12.1 and newer compilers
Maurizio Lombardi (1):
mm: prevent page_frag_alloc() from corrupting the memory
Maxime Ripard (1):
drm/mipi-dsi: Detach devices when removing the host
Miaoqian Lin (6):
clk: tegra: Fix refcount leak in tegra210_clock_init
clk: tegra: Fix refcount leak in tegra114_clock_init
clk: tegra20: Fix refcount leak in tegra20_clock_init
HSI: omap_ssi: Fix refcount leak in ssi_probe
media: xilinx: vipp: Fix refcount leak in xvip_graph_dma_init
clk: ti: dra7-atl: Fix reference leak in of_dra7_atl_clk_probe
Michael Hennerich (1):
iio: dac: ad5593r: Fix i2c read protocol requirements
Michael Kelley (1):
nvme: Fix IOC_PR_CLEAR and IOC_PR_RELEASE ioctls for nvme devices
Michael Walle (2):
ARM: dts: kirkwood: lsxl: fix serial line
ARM: dts: kirkwood: lsxl: remove first ethernet port
Michal Luczaj (1):
KVM: x86/emulator: Fix handing of POP SS to correctly set interruptibility
Mike Pattrick (2):
openvswitch: Fix double reporting of drops in dropwatch
openvswitch: Fix overreporting of drops in dropwatch
Nathan Chancellor (1):
powerpc/math_emu/efp: Include module.h
Neal Cardwell (1):
tcp: fix tcp_cwnd_validate() to not forget is_cwnd_limited
Niklas Cassel (4):
ata: fix ata_id_sense_reporting_enabled() and ata_id_has_sense_reporting()
ata: fix ata_id_has_devslp()
ata: fix ata_id_has_ncq_autosense()
ata: fix ata_id_has_dipm()
Nuno Sá (1):
iio: inkern: only release the device node when done with it
Pali Rohár (2):
serial: 8250: Fix restoring termios speed after suspend
powerpc: Fix SPE Power ISA properties for e500v1 platforms
Pavel Rojtberg (1):
Input: xpad - add supported devices as contributed on github
Peilin Ye (1):
usbnet: Fix memory leak in usbnet_disconnect()
Rafael J. Wysocki (1):
thermal: intel_powerclamp: Use first online CPU as control_cpu
Robin Guo (1):
usb: musb: Fix musb_gadget.c rxstate overflow bug
Russell King (1):
ARM: fix function graph tracer and unwinder dependencies
Ryusuke Konishi (4):
nilfs2: fix NULL pointer dereference at nilfs_bmap_lookup_at_level()
nilfs2: fix leak of nilfs_root in case of writer thread creation failure
nilfs2: replace WARN_ONs by nilfs_error for checkpoint acquisition failure
nilfs2: fix use-after-free bug of struct nilfs_root
Sami Tolvanen (1):
Makefile.extrawarn: Move -Wcast-function-type-strict to W=1
Sergei Antonov (2):
mmc: moxart: fix 4-bit bus width and remove 8-bit bus width
ARM: dts: fix Moxa SDIO 'compatible', remove 'sdhci' misnomer
Shubhrajyoti Datta (1):
tty: xilinx_uartps: Fix the ignore_status
Srinivas Pandruvada (1):
thermal: intel_powerclamp: Use get_cpu() instead of smp_processor_id() to avoid crash
Stefan Wahren (1):
clk: bcm2835: fix bcm2835_clock_rate_from_divisor declaration
Steven Rostedt (Google) (3):
ring-buffer: Allow splice to read previous partially read pages
ring-buffer: Check pending waiters when doing wake ups as well
ring-buffer: Fix race between reset page and reading page
Swati Agarwal (2):
dmaengine: xilinx_dma: cleanup for fetching xlnx,num-fstores property
dmaengine: xilinx_dma: Report error in case of dma_set_mask_and_coherent API failure
Tadeusz Struk (1):
usb: mon: make mmapped memory read only
Takashi Iwai (5):
ALSA: hda: Fix position reporting on Poulsbo
ALSA: oss: Fix potential deadlock at unregistration
ALSA: rawmidi: Drop register_mutex in snd_rawmidi_free()
ALSA: usb-audio: Fix potential memory leaks
ALSA: usb-audio: Fix NULL dererence at error path
Tetsuo Handa (3):
net: rds: don't hold sock lock when cancelling work from rds_tcp_reset_callbacks()
Bluetooth: L2CAP: initialize delayed works at l2cap_chan_create() net/ieee802154: don't warn zero-sized raw_sendmsg()
Wang Yufen (1):
selftests: Fix the if conditions of in test_extra_filter()
Wen Gong (1):
wifi: ath10k: add peer map clean up for peer delete in ath10k_sta_state()
Xu Qiang (2):
spi: qup: add missing clk_disable_unprepare on error in spi_qup_resume()
spi: qup: add missing clk_disable_unprepare on error in spi_qup_pm_resume_runtime()
Yang Yingliang (1):
Input: melfas_mip4 - fix return value check in mip4_probe()
Zhang Qilong (2):
spi/omap100k:Fix PM disable depth imbalance in omap1_spi100k_probe
f2fs: fix race condition on setting FI_NO_EXTENT flag
Zheng Yongjun (1):
net: fs_enet: Fix wrong check in do_pd_setup
Zheyu Ma (1):
media: cx88: Fix a null-ptr-deref bug in buffer_prepare()
Zhihao Cheng (1):
quota: Check next/prev free block number after reading from quota file
Zhu Yanjun (2):
RDMA/rxe: Fix "kernel NULL pointer dereference" error RDMA/rxe: Fix the error caused by qp->sk
Ziyang Xuan (1):
can: bcm: check the result of can_send() in bcm_can_tx()
hongao (1):
drm/amdgpu: fix initial connector audio value
sunghwan jung (1):
Revert "usb: storage: Add quirk for Samsung Fit flash"
Greg Kroah-Hartman
maintainerDocumentation/ABI/testing/sysfs-bus-iio +1 -1
@@ -125,7 +125,7 @@ Description: Raw capacitance measurement from channel Y. Units after application of scale and offset are nanofarads. -What: /sys/.../iio:deviceX/in_capacitanceY-in_capacitanceZ_raw +What: /sys/.../iio:deviceX/in_capacitanceY-capacitanceZ_raw KernelVersion: 3.2 Contact: [email protected] Description:
Documentation/devicetree/bindings/dma/moxa,moxart-dma.txt +2 -2
@@ -34,8 +34,8 @@ Example: Use specific request line passing from dma For example, MMC request line is 5 - sdhci: sdhci@98e00000 { - compatible = "moxa,moxart-sdhci"; + mmc: mmc@98e00000 { + compatible = "moxa,moxart-mmc"; reg = <0x98e00000 0x5C>; interrupts = <5 0>; clocks = <&clk_apb>;
Makefile +1 -1
@@ -1,6 +1,6 @@ VERSION = 4 PATCHLEVEL = 9 -SUBLEVEL = 330 +SUBLEVEL = 331 EXTRAVERSION = NAME = Roaring Lionus
arch/arm/Kconfig +1 -2
@@ -53,7 +53,7 @@ config ARM select HAVE_EFFICIENT_UNALIGNED_ACCESS if (CPU_V6 || CPU_V6K || CPU_V7) && MMU select HAVE_EXIT_THREAD select HAVE_FTRACE_MCOUNT_RECORD if (!XIP_KERNEL) - select HAVE_FUNCTION_GRAPH_TRACER if (!THUMB2_KERNEL) + select HAVE_FUNCTION_GRAPH_TRACER if (!THUMB2_KERNEL && !CC_IS_CLANG) select HAVE_FUNCTION_TRACER if (!XIP_KERNEL) select HAVE_FUTEX_CMPXCHG if FUTEX select HAVE_GCC_PLUGINS
@@ -1961,7 +1961,6 @@ config CMDLINE choice prompt "Kernel command line type" if CMDLINE != "" default CMDLINE_FROM_BOOTLOADER - depends on ATAGS config CMDLINE_FROM_BOOTLOADER bool "Use bootloader kernel arguments if available"
arch/arm/Kconfig.debug +3 -3
@@ -17,8 +17,8 @@ config ARM_PTDUMP choice prompt "Choose kernel unwinder" - default UNWINDER_ARM if AEABI && !FUNCTION_GRAPH_TRACER - default UNWINDER_FRAME_POINTER if !AEABI || FUNCTION_GRAPH_TRACER + default UNWINDER_ARM if AEABI + default UNWINDER_FRAME_POINTER if !AEABI help This determines which method will be used for unwinding kernel stack traces for panics, oopses, bugs, warnings, perf, /proc/<pid>/stack,
@@ -35,7 +35,7 @@ config UNWINDER_FRAME_POINTER config UNWINDER_ARM bool "ARM EABI stack unwinder" - depends on AEABI + depends on AEABI && !FUNCTION_GRAPH_TRACER select ARM_UNWIND help This option enables stack unwinding support in the kernel
arch/arm/boot/dts/exynos4412-origen.dts +1 -1
@@ -90,7 +90,7 @@ }; &ehci { - samsung,vbus-gpio = <&gpx3 5 1>; + samsung,vbus-gpio = <&gpx3 5 GPIO_ACTIVE_HIGH>; status = "okay"; port@1{
arch/arm/boot/dts/imx6dl.dtsi +3 -0
@@ -63,6 +63,9 @@ ocram: sram@00900000 { compatible = "mmio-sram"; reg = <0x00900000 0x20000>; + ranges = <0 0x00900000 0x20000>; + #address-cells = <1>; + #size-cells = <1>; clocks = <&clks IMX6QDL_CLK_OCRAM>; };
arch/arm/boot/dts/imx6q.dtsi +3 -0
@@ -82,6 +82,9 @@ ocram: sram@00900000 { compatible = "mmio-sram"; reg = <0x00900000 0x40000>; + ranges = <0 0x00900000 0x40000>; + #address-cells = <1>; + #size-cells = <1>; clocks = <&clks IMX6QDL_CLK_OCRAM>; };
arch/arm/boot/dts/imx6qp.dtsi +6 -0
@@ -47,12 +47,18 @@ ocram2: sram@00940000 { compatible = "mmio-sram"; reg = <0x00940000 0x20000>; + ranges = <0 0x00940000 0x20000>; + #address-cells = <1>; + #size-cells = <1>; clocks = <&clks IMX6QDL_CLK_OCRAM>; }; ocram3: sram@00960000 { compatible = "mmio-sram"; reg = <0x00960000 0x20000>; + ranges = <0 0x00960000 0x20000>; + #address-cells = <1>; + #size-cells = <1>; clocks = <&clks IMX6QDL_CLK_OCRAM>; };
arch/arm/boot/dts/imx6sl.dtsi +3 -0
@@ -102,6 +102,9 @@ ocram: sram@00900000 { compatible = "mmio-sram"; reg = <0x00900000 0x20000>; + ranges = <0 0x00900000 0x20000>; + #address-cells = <1>; + #size-cells = <1>; clocks = <&clks IMX6SL_CLK_OCRAM>; };
arch/arm/boot/dts/imx7d-sdb.dts +1 -6
@@ -126,12 +126,7 @@ interrupt-parent = <&gpio2>; interrupts = <29 0>; pendown-gpio = <&gpio2 29 GPIO_ACTIVE_HIGH>; - ti,x-min = /bits/ 16 <0>; - ti,x-max = /bits/ 16 <0>; - ti,y-min = /bits/ 16 <0>; - ti,y-max = /bits/ 16 <0>; - ti,pressure-max = /bits/ 16 <0>; - ti,x-plate-ohms = /bits/ 16 <400>; + touchscreen-max-pressure = <255>; wakeup-source; }; };
arch/arm/boot/dts/kirkwood-lsxl.dtsi +5 -11
@@ -9,6 +9,11 @@ ocp@f1000000 { pinctrl: pin-controller@10000 { + /* Non-default UART pins */ + pmx_uart0: pmx-uart0 { + marvell,pins = "mpp4", "mpp5"; + }; + pmx_power_hdd: pmx-power-hdd { marvell,pins = "mpp10"; marvell,function = "gpo";
@@ -212,22 +217,11 @@ &mdio { status = "okay"; - ethphy0: ethernet-phy@0 { - reg = <0>; - }; - ethphy1: ethernet-phy@8 { reg = <8>; }; }; -ð0 { - status = "okay"; - ethernet0-port@0 { - phy-handle = <ðphy0>; - }; -}; - ð1 { status = "okay"; ethernet1-port@0 {
arch/arm/boot/dts/moxart-uc7112lx.dts +1 -1
@@ -80,7 +80,7 @@ clocks = <&ref12>; }; -&sdhci { +&mmc { status = "okay"; };
arch/arm/boot/dts/moxart.dtsi +2 -2
@@ -91,8 +91,8 @@ clocks = <&clk_apb>; }; - sdhci: sdhci@98e00000 { - compatible = "moxa,moxart-sdhci"; + mmc: mmc@98e00000 { + compatible = "moxa,moxart-mmc"; reg = <0x98e00000 0x5C>; interrupts = <5 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clk_apb>;
arch/mips/bcm47xx/prom.c +2 -2
@@ -85,7 +85,7 @@ static __init void prom_init_mem(void)pr_debug ("Assume 128MB RAM\n" );break ; } -if (!memcmp (prom_init, prom_init + mem,32 )) +if (!memcmp ((void *)prom_init, (void *)prom_init + mem,32 ))break ; } lowmem = mem;
@@ -162,7 +162,7 @@ void __init bcm47xx_prom_highmem_init(void) off =EXTVBASE +__pa (off);for (extmem =128 <<20 ; extmem <512 <<20 ; extmem <<=1 ) { -if (!memcmp (prom_init, (void *)(off + extmem),16 )) +if (!memcmp ((void *)prom_init, (void *)(off + extmem),16 ))break ; } extmem -= lowmem;
arch/powerpc/boot/dts/fsl/e500v1_power_isa.dtsi new file +51 -0
51 lines not on this page · raw message
arch/powerpc/boot/dts/fsl/mpc8540ads.dts +1 -1
@@ -11,7 +11,7 @@ /dts-v1/; -/include/ "e500v2_power_isa.dtsi" +/include/ "e500v1_power_isa.dtsi" / { model = "MPC8540ADS";
arch/powerpc/boot/dts/fsl/mpc8541cds.dts +1 -1
@@ -11,7 +11,7 @@ /dts-v1/; -/include/ "e500v2_power_isa.dtsi" +/include/ "e500v1_power_isa.dtsi" / { model = "MPC8541CDS";
arch/powerpc/boot/dts/fsl/mpc8555cds.dts +1 -1
@@ -11,7 +11,7 @@ /dts-v1/; -/include/ "e500v2_power_isa.dtsi" +/include/ "e500v1_power_isa.dtsi" / { model = "MPC8555CDS";
arch/powerpc/boot/dts/fsl/mpc8560ads.dts +1 -1
@@ -11,7 +11,7 @@ /dts-v1/; -/include/ "e500v2_power_isa.dtsi" +/include/ "e500v1_power_isa.dtsi" / { model = "MPC8560ADS";
arch/powerpc/kernel/pci_dn.c +1 -0
@@ -355,6 +355,7 @@ struct pci_dn *pci_add_device_node_info(struct pci_controller *hose,INIT_LIST_HEAD (&pdn->list); parent =of_get_parent (dn); pdn->parent = parent ?PCI_DN (parent) :NULL ; +of_node_put (parent);if (pdn->parent)list_add_tail (&pdn->list, &pdn->parent->child_list);
arch/powerpc/math-emu/math_efp.c +1 -0
@@ -21,6 +21,7 @@#include <linux/types.h> #include <linux/prctl.h> +#include <linux/module.h> #include <asm/uaccess.h> #include <asm/reg.h>
arch/sh/include/asm/sections.h +1 -1
@@ -3,7 +3,7 @@#include <asm-generic/sections.h> -extern long __machvec_start, __machvec_end; +extern char __machvec_start[], __machvec_end[];extern char __uncached_start, __uncached_end;extern char __start_eh_frame[], __stop_eh_frame[];
arch/sh/kernel/machvec.c +5 -5
@@ -22,8 +22,8 @@#define MV_NAME_SIZE 32#define for_each_mv (mv) \ - for ((mv) = (struct sh_machine_vector *)&__machvec_start; \ - (mv) && (unsigned long)(mv) < (unsigned long)&__machvec_end; \ + for ((mv) = (struct sh_machine_vector *)__machvec_start; \ + (mv) && (unsigned long)(mv) < (unsigned long)__machvec_end; \ (mv)++)static struct sh_machine_vector *__init get_mv_byname (const char *name)
@@ -89,8 +89,8 @@ void __init sh_mv_setup(void)if (!machvec_selected) {unsigned long machvec_size; - machvec_size = ((unsigned long )&__machvec_end - - (unsigned long )&__machvec_start); + machvec_size = ((unsigned long )__machvec_end - + (unsigned long )__machvec_start);/* * Sanity check for machvec section alignment. Ensure
@@ -104,7 +104,7 @@ void __init sh_mv_setup(void)* vector (usually the only one) from .machvec.init. */ if (machvec_size >=sizeof (struct sh_machine_vector )) - sh_mv = *(struct sh_machine_vector *)&__machvec_start; + sh_mv = *(struct sh_machine_vector *)__machvec_start; }printk (KERN_NOTICE "Booting machvec: %s\n" ,get_system_type ());
arch/um/kernel/um_arch.c +1 -1
@@ -81,7 +81,7 @@ static int show_cpuinfo(struct seq_file *m, void *v)static void *c_start (struct seq_file *m,loff_t *pos) { -return *pos <NR_CPUS ? cpu_data + *pos :NULL ; +return *pos < nr_cpu_ids ? cpu_data + *pos :NULL ; }static void *c_next (struct seq_file *m,void *v,loff_t *pos)
arch/x86/kvm/emulate.c +1 -1
@@ -1980,7 +1980,7 @@ static int em_pop_sreg(struct x86_emulate_ctxt *ctxt)if (rc !=X86EMUL_CONTINUE )return rc; -if (ctxt->modrm_reg ==VCPU_SREG_SS ) +if (seg ==VCPU_SREG_SS ) ctxt->interruptibility =KVM_X86_SHADOW_INT_MOV_SS ;if (ctxt->op_bytes >2 )rsp_increment (ctxt, ctxt->op_bytes -2 );
arch/x86/um/shared/sysdep/syscalls_32.h +2 -3
@@ -6,10 +6,9 @@#include <asm/unistd.h> #include <sysdep/ptrace.h> -typedef long syscall_handler_t (struct pt_regs ); +typedef long syscall_handler_t (struct syscall_args );extern syscall_handler_t *sys_call_table[];#define EXECUTE_SYSCALL (syscall, regs) \ - ((long (*)(struct syscall_args)) \ - (*sys_call_table[syscall]))(SYSCALL_ARGS(®s->regs)) + ((*sys_call_table[syscall]))(SYSCALL_ARGS(®s->regs))
arch/x86/um/tls_32.c +0 -6
@@ -65,9 +65,6 @@ static int get_free_idx(struct task_struct* task)struct thread_struct *t = &task->thread;int idx; -if (!t->arch.tls_array) -return GDT_ENTRY_TLS_MIN ; -for (idx =0 ; idx <GDT_ENTRY_TLS_ENTRIES ; idx++)if (!t->arch.tls_array[idx].present)return idx +GDT_ENTRY_TLS_MIN ;
@@ -242,9 +239,6 @@ static int get_tls_entry(struct task_struct *task, struct user_desc *info, {struct thread_struct *t = &task->thread; -if (!t->arch.tls_array) - goto clear; -if (idx <GDT_ENTRY_TLS_MIN || idx >GDT_ENTRY_TLS_MAX )return -EINVAL ;
drivers/acpi/acpi_video.c +16 -0
@@ -485,6 +485,22 @@ static struct dmi_system_id video_dmi_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "SATELLITE R830"), }, }, + { + .callback = video_disable_backlight_sysfs_if, + .ident = "Toshiba Satellite Z830", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), + DMI_MATCH(DMI_PRODUCT_NAME, "SATELLITE Z830"), + }, + }, + { + .callback = video_disable_backlight_sysfs_if, + .ident = "Toshiba Portege Z830", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), + DMI_MATCH(DMI_PRODUCT_NAME, "PORTEGE Z830"), + }, + }, /* * Some machine's _DOD IDs don't have bit 31(Device ID Scheme) set * but the IDs actually follow the Device ID Scheme.
drivers/char/random.c +15 -7
@@ -891,10 +891,10 @@ void __init add_bootloader_randomness(const void *buf, size_t len) }struct fast_pool { -struct work_struct mix;unsigned long pool[4 ];unsigned long last;unsigned int count; +struct timer_list mix; }; static DEFINE_PER_CPU(struct fast_pool, irq_randomness) = {
@@ -946,9 +946,9 @@ int __cold random_online_cpu(unsigned int cpu) }#endif -static void mix_interrupt_randomness (struct work_struct *work) +static void mix_interrupt_randomness (unsigned long data) { - struct fast_pool *fast_pool = container_of(work, struct fast_pool, mix); +struct fast_pool *fast_pool = (struct fast_pool *)data;/* * The size of the copied stack pool is explicitly 2 longs so that we * only ever ingest half of the siphash output each time, retaining
@@ -977,7 +977,7 @@ static void mix_interrupt_randomness(struct work_struct *work)local_irq_enable ();mix_pool_bytes (pool,sizeof (pool)); -credit_init_bits (max (1u , (count &U16_MAX ) /64 )); + credit_init_bits(clamp_t(unsigned int, (count & U16_MAX) / 64, 1, sizeof(pool) * 8));memzero_explicit (pool,sizeof (pool)); }
@@ -1000,10 +1000,14 @@ void add_interrupt_randomness(int irq)if (new_count <1024 && !time_is_before_jiffies (fast_pool->last +HZ ))return ; -if (unlikely (!fast_pool->mix.func)) -INIT_WORK (&fast_pool->mix, mix_interrupt_randomness); +if (unlikely (!fast_pool->mix.data)) +setup_timer (&fast_pool->mix, mix_interrupt_randomness, (unsigned long )fast_pool); + fast_pool->count |=MIX_INFLIGHT ; -queue_work_on (raw_smp_processor_id (), system_highpri_wq, &fast_pool->mix); +if (!timer_pending (&fast_pool->mix)) { + fast_pool->mix.expires = jiffies; +add_timer_on (&fast_pool->mix,raw_smp_processor_id ()); + } }EXPORT_SYMBOL_GPL (add_interrupt_randomness);
@@ -1295,6 +1299,10 @@ static ssize_t random_read_iter(struct kiocb *kiocb, struct iov_iter *iter) {int ret; +if (!crng_ready () && + (kiocb->ki_filp->f_flags &O_NONBLOCK )) +return -EAGAIN ; + ret =wait_for_random_bytes ();if (ret !=0 )return ret;
drivers/clk/bcm/clk-bcm2835.c +3 -3
@@ -902,9 +902,9 @@ static u32 bcm2835_clock_choose_div(struct clk_hw *hw,return div; } -static long bcm2835_clock_rate_from_divisor (struct bcm2835_clock *clock, -unsigned long parent_rate, -u32 div) +static unsigned long bcm2835_clock_rate_from_divisor (struct bcm2835_clock *clock, +unsigned long parent_rate, +u32 div) {const struct bcm2835_clock_data *data = clock->data;u64 temp;
drivers/clk/bcm/clk-iproc-pll.c +44 -51
239 lines not on this page · raw message
drivers/clk/tegra/clk-tegra114.c +1 -0
@@ -1342,6 +1342,7 @@ static void __init tegra114_clock_init(struct device_node *np) } pmc_base =of_iomap (node,0 ); +of_node_put (node);if (!pmc_base) {pr_err ("Can't map pmc registers\n" );WARN_ON (1 );
drivers/clk/tegra/clk-tegra20.c +1 -0
@@ -1101,6 +1101,7 @@ static void __init tegra20_clock_init(struct device_node *np) } pmc_base =of_iomap (node,0 ); +of_node_put (node);if (!pmc_base) {pr_err ("Can't map pmc registers\n" );BUG ();
drivers/clk/tegra/clk-tegra210.c +1 -0
@@ -2706,6 +2706,7 @@ static void __init tegra210_clock_init(struct device_node *np) } pmc_base =of_iomap (node,0 ); +of_node_put (node);if (!pmc_base) {pr_err ("Can't map pmc registers\n" );WARN_ON (1 );
drivers/clk/ti/clk-dra7-atl.c +6 -3
@@ -249,14 +249,16 @@ static int of_dra7_atl_clk_probe(struct platform_device *pdev)if (rc) {pr_err ("%s: failed to lookup atl clock %d\n" , __func__, i); -return -EINVAL ; + ret = -EINVAL ; + goto pm_put; } clk =of_clk_get_from_provider (&clkspec);if (IS_ERR (clk)) {pr_err ("%s: failed to get atl clock %d from provider\n" , __func__, i); -return PTR_ERR (clk); + ret =PTR_ERR (clk); + goto pm_put; } cdesc =to_atl_desc (__clk_get_hw (clk));
@@ -289,8 +291,9 @@ static int of_dra7_atl_clk_probe(struct platform_device *pdev)if (cdesc->enabled)atl_clk_enable (__clk_get_hw (clk)); } -pm_runtime_put_sync (cinfo->dev); +pm_put: +pm_runtime_put_sync (cinfo->dev);return ret; }
drivers/dma/ioat/dma.c +3 -3
@@ -663,7 +663,7 @@ static void __cleanup(struct ioatdma_chan *ioat_chan, dma_addr_t phys_complete)if (active - i ==0 ) {dev_dbg (to_dev (ioat_chan),"%s: cancel completion timeout\n" , __func__); -mod_timer (&ioat_chan->timer, jiffies +IDLE_TIMEOUT ); +mod_timer_pending (&ioat_chan->timer, jiffies +IDLE_TIMEOUT ); }/* 5 microsecond delay per pending descriptor */
@@ -685,7 +685,7 @@ static void ioat_cleanup(struct ioatdma_chan *ioat_chan)if (chanerr & (IOAT_CHANERR_HANDLE_MASK |IOAT_CHANERR_RECOVER_MASK )) { -mod_timer (&ioat_chan->timer, jiffies +IDLE_TIMEOUT ); +mod_timer_pending (&ioat_chan->timer, jiffies +IDLE_TIMEOUT );ioat_eh (ioat_chan); } }
@@ -877,7 +877,7 @@ static void check_active(struct ioatdma_chan *ioat_chan) }if (test_and_clear_bit (IOAT_CHAN_ACTIVE , &ioat_chan->state)) -mod_timer (&ioat_chan->timer, jiffies +IDLE_TIMEOUT ); +mod_timer_pending (&ioat_chan->timer, jiffies +IDLE_TIMEOUT ); }void ioat_timer_event (unsigned long data)
drivers/dma/xilinx/xilinx_dma.c +6 -2
@@ -2558,7 +2558,7 @@ static int xilinx_dma_probe(struct platform_device *pdev)if (err <0 ) {dev_err (xdev->dev,"missing xlnx,num-fstores property\n" ); -return err; + goto disable_clks; } err = of_property_read_u32(node, "xlnx,flush-fsync",
@@ -2578,7 +2578,11 @@ static int xilinx_dma_probe(struct platform_device *pdev) xdev->ext_addr = false;/* Set the dma mask bits */ -dma_set_mask_and_coherent (xdev->dev,DMA_BIT_MASK (addr_width)); + err =dma_set_mask_and_coherent (xdev->dev,DMA_BIT_MASK (addr_width)); +if (err <0 ) { +dev_err (xdev->dev,"DMA mask error %d\n" , err); + goto disable_clks; + }/* Initialize the DMA engine */ xdev->common.dev = &pdev->dev;
drivers/firmware/google/gsmi.c +9 -0
@@ -661,6 +661,15 @@ static struct notifier_block gsmi_die_notifier = {static int gsmi_panic_callback (struct notifier_block *nb,unsigned long reason,void *arg) { + +/* +* Panic callbacks are executed with all other CPUs stopped, +* so we must not attempt to spin waiting for gsmi_dev.lock +* to be released. +*/ +if (spin_is_locked (&gsmi_dev.lock)) +return NOTIFY_DONE ; +gsmi_shutdown_reason (GSMI_SHUTDOWN_PANIC );return NOTIFY_DONE ; }
drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c +6 -1
@@ -1760,10 +1760,12 @@ amdgpu_connector_add(struct amdgpu_device *adev, adev->mode_info.dither_property, AMDGPU_FMT_DITHER_DISABLE); -if (amdgpu_audio !=0 ) +if (amdgpu_audio !=0 ) {drm_object_attach_property (&amdgpu_connector->base.base, adev->mode_info.audio_property,AMDGPU_AUDIO_AUTO ); + amdgpu_connector->audio =AMDGPU_AUDIO_AUTO ; + } subpixel_order = SubPixelHorizontalRGB; connector->interlace_allowed = true;
@@ -1868,6 +1870,7 @@ amdgpu_connector_add(struct amdgpu_device *adev,drm_object_attach_property (&amdgpu_connector->base.base, adev->mode_info.audio_property,AMDGPU_AUDIO_AUTO ); + amdgpu_connector->audio =AMDGPU_AUDIO_AUTO ; } drm_object_attach_property(&amdgpu_connector->base.base, adev->mode_info.dither_property,
@@ -1916,6 +1919,7 @@ amdgpu_connector_add(struct amdgpu_device *adev,drm_object_attach_property (&amdgpu_connector->base.base, adev->mode_info.audio_property,AMDGPU_AUDIO_AUTO ); + amdgpu_connector->audio =AMDGPU_AUDIO_AUTO ; } drm_object_attach_property(&amdgpu_connector->base.base, adev->mode_info.dither_property,
@@ -1961,6 +1965,7 @@ amdgpu_connector_add(struct amdgpu_device *adev,drm_object_attach_property (&amdgpu_connector->base.base, adev->mode_info.audio_property,AMDGPU_AUDIO_AUTO ); + amdgpu_connector->audio =AMDGPU_AUDIO_AUTO ; } drm_object_attach_property(&amdgpu_connector->base.base, adev->mode_info.dither_property,
drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +0 -13
@@ -1463,12 +1463,6 @@ int analogix_dp_suspend(struct device *dev)struct analogix_dp_device *dp =dev_get_drvdata (dev);clk_disable_unprepare (dp->clock); - -if (dp->plat_data->panel) { -if (drm_panel_unprepare (dp->plat_data->panel)) -DRM_ERROR ("failed to turnoff the panel\n" ); - } -return 0 ; }EXPORT_SYMBOL_GPL (analogix_dp_suspend);
@@ -1484,13 +1478,6 @@ int analogix_dp_resume(struct device *dev)return ret; } -if (dp->plat_data->panel) { -if (drm_panel_prepare (dp->plat_data->panel)) { -DRM_ERROR ("failed to setup the panel\n" ); -return -EBUSY ; - } - } -return 0 ; }EXPORT_SYMBOL_GPL (analogix_dp_resume);
drivers/gpu/drm/drm_ioctl.c +7 -1
@@ -419,7 +419,13 @@ EXPORT_SYMBOL(drm_invalid_op);*/ static int drm_copy_field (char __user *buf,size_t *buf_len,const char *value) { -int len; +size_t len; + +/* don't attempt to copy a NULL pointer */ +if (WARN_ONCE (!value,"BUG: the value to copy was not set!" )) { + *buf_len =0 ; +return 0 ; + }/* don't overflow userbuf */ len =strlen (value);
drivers/gpu/drm/drm_mipi_dsi.c +1 -0
@@ -305,6 +305,7 @@ static int mipi_dsi_remove_device_fn(struct device *dev, void *priv) {struct mipi_dsi_device *dsi =to_mipi_dsi_device (dev); +mipi_dsi_detach (dsi);mipi_dsi_device_unregister (dsi);return 0 ;
drivers/hid/hid-roccat.c +4 -0
@@ -260,6 +260,8 @@ int roccat_report_event(int minor, u8 const *data)if (!new_value)return -ENOMEM ; +mutex_lock (&device->cbuf_lock); + report = &device->cbuf[device->cbuf_end];/* passing NULL is safe */
@@ -279,6 +281,8 @@ int roccat_report_event(int minor, u8 const *data) reader->cbuf_start = (reader->cbuf_start +1 ) %ROCCAT_CBUF_SIZE ; } +mutex_unlock (&device->cbuf_lock); +wake_up_interruptible (&device->wait);return 0 ; }
drivers/hsi/controllers/omap_ssi_core.c +1 -0
@@ -562,6 +562,7 @@ static int ssi_probe(struct platform_device *pd)if (!childpdev) { err = -ENODEV ;dev_err (&pd->dev,"failed to create ssi controller port\n" ); +of_node_put (child); goto out3; } }
drivers/hsi/controllers/omap_ssi_port.c +4 -4
@@ -252,10 +252,10 @@ static int ssi_start_dma(struct hsi_msg *msg, int lch)if (msg->ttype ==HSI_MSG_READ ) { err =dma_map_sg (&ssi->device, msg->sgt.sgl, msg->sgt.nents,DMA_FROM_DEVICE ); -if (err <0 ) { +if (!err) {dev_dbg (&ssi->device,"DMA map SG failed !\n" );pm_runtime_put_autosuspend (omap_port->pdev); -return err; +return -EIO ; } csdp = SSI_DST_BURST_4x32_BIT |SSI_DST_MEMORY_PORT | SSI_SRC_SINGLE_ACCESS0 | SSI_SRC_PERIPHERAL_PORT |
@@ -269,10 +269,10 @@ static int ssi_start_dma(struct hsi_msg *msg, int lch) }else { err =dma_map_sg (&ssi->device, msg->sgt.sgl, msg->sgt.nents,DMA_TO_DEVICE ); -if (err <0 ) { +if (!err) {dev_dbg (&ssi->device,"DMA map SG failed !\n" );pm_runtime_put_autosuspend (omap_port->pdev); -return err; +return -EIO ; } csdp = SSI_SRC_BURST_4x32_BIT |SSI_SRC_MEMORY_PORT | SSI_DST_SINGLE_ACCESS0 | SSI_DST_PERIPHERAL_PORT |
drivers/iio/adc/at91-sama5d2_adc.c +1 -1
@@ -74,7 +74,7 @@#define AT91_SAMA5D2_MR_ANACH BIT(23)/* Tracking Time */ #define AT91_SAMA5D2_MR_TRACKTIM (v) ((v) << 24) -#define AT91_SAMA5D2_MR_TRACKTIM_MAX 0xff +#define AT91_SAMA5D2_MR_TRACKTIM_MAX 0xf/* Transfer Time */ #define AT91_SAMA5D2_MR_TRANSFER (v) ((v) << 28)#define AT91_SAMA5D2_MR_TRANSFER_MAX 0x3
drivers/iio/dac/ad5593r.c +27 -19
77 lines not on this page · raw message
drivers/iio/inkern.c +4 -2
@@ -139,9 +139,10 @@ static int __of_iio_channel_get(struct iio_channel *channel, idev =bus_find_device (&iio_bus_type,NULL , iiospec.np, iio_dev_node_match); -of_node_put (iiospec.np); -if (idev ==NULL ) +if (idev ==NULL ) { +of_node_put (iiospec.np);return -EPROBE_DEFER ; + } indio_dev =dev_to_iio_dev (idev); channel->indio_dev = indio_dev;
@@ -149,6 +150,7 @@ static int __of_iio_channel_get(struct iio_channel *channel, index = indio_dev->info->of_xlate (indio_dev, &iiospec); else index =__of_iio_simple_xlate (indio_dev, &iiospec); +of_node_put (iiospec.np);if (index <0 ) goto err_put; channel->channel = &indio_dev->channels[index];
drivers/infiniband/sw/rxe/rxe_qp.c +7 -3
@@ -825,7 +825,9 @@ void rxe_qp_destroy(struct rxe_qp *qp)rxe_cleanup_task (&qp->comp.task);/* flush out any receive wr's or pending requests */ -__rxe_do_task (&qp->req.task); +if (qp->req.task.func) +__rxe_do_task (&qp->req.task); +if (qp->sq.queue) {__rxe_do_task (&qp->comp.task);__rxe_do_task (&qp->req.task);
@@ -862,6 +864,8 @@ void rxe_qp_cleanup(void *arg)free_rd_atomic_resources (qp); -kernel_sock_shutdown (qp->sk,SHUT_RDWR ); -sock_release (qp->sk); +if (qp->sk) { +kernel_sock_shutdown (qp->sk,SHUT_RDWR ); +sock_release (qp->sk); + } }
drivers/input/joystick/xpad.c +19 -1
@@ -129,6 +129,8 @@ static const struct xpad_device {u8 xtype; } xpad_device[] = { { 0x0079, 0x18d4, "GPD Win 2 X-Box Controller", 0, XTYPE_XBOX360 }, + { 0x03eb, 0xff01, "Wooting One (Legacy)", 0, XTYPE_XBOX360 }, + { 0x03eb, 0xff02, "Wooting Two (Legacy)", 0, XTYPE_XBOX360 }, { 0x044f, 0x0f00, "Thrustmaster Wheel", 0, XTYPE_XBOX }, { 0x044f, 0x0f03, "Thrustmaster Wheel", 0, XTYPE_XBOX }, { 0x044f, 0x0f07, "Thrustmaster, Inc. Controller", 0, XTYPE_XBOX },
@@ -259,6 +261,7 @@ static const struct xpad_device { { 0x0f0d, 0x0063, "Hori Real Arcade Pro Hayabusa (USA) Xbox One", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE }, { 0x0f0d, 0x0067, "HORIPAD ONE", 0, XTYPE_XBOXONE }, { 0x0f0d, 0x0078, "Hori Real Arcade Pro V Kai Xbox One", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE }, + { 0x0f0d, 0x00c5, "Hori Fighting Commander ONE", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE }, { 0x0f30, 0x010b, "Philips Recoil", 0, XTYPE_XBOX }, { 0x0f30, 0x0202, "Joytech Advanced Controller", 0, XTYPE_XBOX }, { 0x0f30, 0x8888, "BigBen XBMiniPad Controller", 0, XTYPE_XBOX },
@@ -275,6 +278,7 @@ static const struct xpad_device { { 0x1430, 0x8888, "TX6500+ Dance Pad (first generation)", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX }, { 0x1430, 0xf801, "RedOctane Controller", 0, XTYPE_XBOX360 }, { 0x146b, 0x0601, "BigBen Interactive XBOX 360 Controller", 0, XTYPE_XBOX360 }, + { 0x146b, 0x0604, "Bigben Interactive DAIJA Arcade Stick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, { 0x1532, 0x0037, "Razer Sabertooth", 0, XTYPE_XBOX360 }, { 0x1532, 0x0a00, "Razer Atrox Arcade Stick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE }, { 0x1532, 0x0a03, "Razer Wildcat", 0, XTYPE_XBOXONE },
@@ -339,6 +343,7 @@ static const struct xpad_device { { 0x24c6, 0x5502, "Hori Fighting Stick VX Alt", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, { 0x24c6, 0x5503, "Hori Fighting Edge", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, { 0x24c6, 0x5506, "Hori SOULCALIBUR V Stick", 0, XTYPE_XBOX360 }, + { 0x24c6, 0x5510, "Hori Fighting Commander ONE (Xbox 360/PC Mode)", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, { 0x24c6, 0x550d, "Hori GEM Xbox controller", 0, XTYPE_XBOX360 }, { 0x24c6, 0x550e, "Hori Real Arcade Pro V Kai 360", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, { 0x24c6, 0x551a, "PowerA FUSION Pro Controller", 0, XTYPE_XBOXONE },
@@ -348,6 +353,14 @@ static const struct xpad_device { { 0x24c6, 0x5b03, "Thrustmaster Ferrari 458 Racing Wheel", 0, XTYPE_XBOX360 }, { 0x24c6, 0x5d04, "Razer Sabertooth", 0, XTYPE_XBOX360 }, { 0x24c6, 0xfafe, "Rock Candy Gamepad for Xbox 360", 0, XTYPE_XBOX360 }, + { 0x2563, 0x058d, "OneXPlayer Gamepad", 0, XTYPE_XBOX360 }, + { 0x2dc8, 0x2000, "8BitDo Pro 2 Wired Controller fox Xbox", 0, XTYPE_XBOXONE }, + { 0x31e3, 0x1100, "Wooting One", 0, XTYPE_XBOX360 }, + { 0x31e3, 0x1200, "Wooting Two", 0, XTYPE_XBOX360 }, + { 0x31e3, 0x1210, "Wooting Lekker", 0, XTYPE_XBOX360 }, + { 0x31e3, 0x1220, "Wooting Two HE", 0, XTYPE_XBOX360 }, + { 0x31e3, 0x1300, "Wooting 60HE (AVR)", 0, XTYPE_XBOX360 }, + { 0x31e3, 0x1310, "Wooting 60HE (ARM)", 0, XTYPE_XBOX360 }, { 0x3285, 0x0607, "Nacon GC-100", 0, XTYPE_XBOX360 }, { 0x3767, 0x0101, "Fanatec Speedster 3 Forceshock Wheel", 0, XTYPE_XBOX }, { 0xffff, 0xffff, "Chinese-made Xbox Controller", 0, XTYPE_XBOX },
@@ -433,6 +446,7 @@ static const signed short xpad_abs_triggers[] = {static const struct usb_device_id xpad_table[] = { {USB_INTERFACE_INFO ('X' ,'B' ,0 ) },/* X-Box USB-IF not approved class */ XPAD_XBOX360_VENDOR (0x0079 ),/* GPD Win 2 Controller */ +XPAD_XBOX360_VENDOR (0x03eb ),/* Wooting Keyboards (Legacy) */ XPAD_XBOX360_VENDOR (0x044f ),/* Thrustmaster X-Box 360 controllers */ XPAD_XBOX360_VENDOR (0x045e ),/* Microsoft X-Box 360 controllers */ XPAD_XBOXONE_VENDOR (0x045e ),/* Microsoft X-Box One controllers */
@@ -443,6 +457,7 @@ static const struct usb_device_id xpad_table[] = { { USB_DEVICE(0x0738, 0x4540) }, /* Mad Catz Beat Pad */XPAD_XBOXONE_VENDOR (0x0738 ),/* Mad Catz FightStick TE 2 */ XPAD_XBOX360_VENDOR (0x07ff ),/* Mad Catz GamePad */ +XPAD_XBOX360_VENDOR (0x0c12 ),/* Zeroplus X-Box 360 controllers */ XPAD_XBOX360_VENDOR (0x0e6f ),/* 0x0e6f X-Box 360 controllers */ XPAD_XBOXONE_VENDOR (0x0e6f ),/* 0x0e6f X-Box One controllers */ XPAD_XBOX360_VENDOR(0x0f0d), /* Hori Controllers */
@@ -463,8 +478,12 @@ static const struct usb_device_id xpad_table[] = {XPAD_XBOXONE_VENDOR (0x20d6 ),/* PowerA Controllers */ XPAD_XBOX360_VENDOR (0x24c6 ),/* PowerA Controllers */ XPAD_XBOXONE_VENDOR (0x24c6 ),/* PowerA Controllers */ +XPAD_XBOX360_VENDOR (0x2563 ),/* OneXPlayer Gamepad */ +XPAD_XBOX360_VENDOR (0x260d ),/* Dareu H101 */ +XPAD_XBOXONE_VENDOR (0x2dc8 ),/* 8BitDo Pro 2 Wired Controller for Xbox */ XPAD_XBOXONE_VENDOR (0x2e24 ),/* Hyperkin Duke X-Box One pad */ XPAD_XBOX360_VENDOR (0x2f24 ),/* GameSir Controllers */ +XPAD_XBOX360_VENDOR (0x31e3 ),/* Wooting Keyboards */ XPAD_XBOX360_VENDOR(0x3285), /* Nacon GC-100 */ { } };
@@ -1981,7 +2000,6 @@ static struct usb_driver xpad_driver = { .disconnect = xpad_disconnect, .suspend = xpad_suspend, .resume = xpad_resume, - .reset_resume = xpad_resume, .id_table = xpad_table, };
drivers/input/touchscreen/melfas_mip4.c +1 -1
@@ -1416,7 +1416,7 @@ static int mip4_probe(struct i2c_client *client, const struct i2c_device_id *id) "ce", GPIOD_OUT_LOW);if (IS_ERR (ts->gpio_ce)) { error =PTR_ERR (ts->gpio_ce); -if (error !=EPROBE_DEFER ) +if (error != -EPROBE_DEFER )dev_err (&client->dev,"Failed to get gpio: %d\n" , error);return error;
drivers/iommu/omap-iommu-debug.c +3 -3
@@ -35,12 +35,12 @@ static inline bool is_omap_iommu_detached(struct omap_iommu *obj)ssize_t bytes; \const char *str ="%20s: %08x\n" ; \const int maxcol =32 ; \ - bytes =snprintf (p, maxcol, str,__stringify (name), \ +if (len < maxcol) \ + goto out; \ + bytes =scnprintf (p, maxcol, str,__stringify (name), \ iommu_read_reg(obj, MMU_##name)); \ p += bytes; \ len -= bytes; \ -if (len < maxcol) \ - goto out; \ }while (0 ) static ssize_t
drivers/isdn/mISDN/l1oip.h +1 -0
@@ -58,6 +58,7 @@ struct l1oip {int bundle;/* bundle channels in one frm */ int codec;/* codec to use for transmis. */ int limit;/* limit number of bchannels */ +bool shutdown;/* if card is released */ /* timer */ struct timer_list keep_tl;
drivers/isdn/mISDN/l1oip_core.c +7 -6
@@ -287,7 +287,7 @@ l1oip_socket_send(struct l1oip *hc, u8 localcodec, u8 channel, u32 chanmask, p = frame;/* restart timer */ -if (time_before (hc->keep_tl.expires, jiffies +5 *HZ )) +if (time_before (hc->keep_tl.expires, jiffies +5 *HZ ) && !hc->shutdown)mod_timer (&hc->keep_tl, jiffies +L1OIP_KEEPALIVE *HZ );else hc->keep_tl.expires = jiffies +L1OIP_KEEPALIVE *HZ ;
@@ -619,7 +619,9 @@ l1oip_socket_parse(struct l1oip *hc, struct sockaddr_in *sin, u8 *buf, int len) goto multiframe;/* restart timer */ -if (time_before (hc->timeout_tl.expires, jiffies +5 *HZ ) || !hc->timeout_on) { +if ((time_before (hc->timeout_tl.expires, jiffies +5 *HZ ) || + !hc->timeout_on) && + !hc->shutdown) { hc->timeout_on =1 ;mod_timer (&hc->timeout_tl, jiffies +L1OIP_TIMEOUT *HZ ); }else /* only adjust timer */
@@ -1246,11 +1248,10 @@ release_card(struct l1oip *hc) {int ch; -if (timer_pending (&hc->keep_tl)) -del_timer (&hc->keep_tl); + hc->shutdown = true; -if (timer_pending (&hc->timeout_tl)) -del_timer (&hc->timeout_tl); +del_timer_sync (&hc->keep_tl); +del_timer_sync (&hc->timeout_tl);cancel_work_sync (&hc->workq);
drivers/media/pci/cx88/cx88-vbi.c +4 -5
@@ -140,11 +140,10 @@ static int buffer_prepare(struct vb2_buffer *vb)return -EINVAL ;vb2_set_plane_payload (vb,0 , size); -cx88_risc_buffer (dev->pci, &buf->risc, sgt->sgl, -0 ,VBI_LINE_LENGTH * lines, -VBI_LINE_LENGTH ,0 , - lines); -return 0 ; +return cx88_risc_buffer (dev->pci, &buf->risc, sgt->sgl, +0 ,VBI_LINE_LENGTH * lines, +VBI_LINE_LENGTH ,0 , + lines); }static void buffer_finish (struct vb2_buffer *vb)
drivers/media/pci/cx88/cx88-video.c +22 -21
70 lines not on this page · raw message
drivers/media/platform/exynos4-is/fimc-is.c +1 -0
@@ -217,6 +217,7 @@ static int fimc_is_register_subdevs(struct fimc_is *is)if (ret <0 || index >=FIMC_IS_SENSORS_NUM ) {of_node_put (child); +of_node_put (i2c_bus);return ret; } index++;
drivers/media/platform/xilinx/xilinx-vipp.c +5 -4
@@ -462,7 +462,7 @@ static int xvip_graph_dma_init(struct xvip_composite_device *xdev) {struct device_node *ports;struct device_node *port; -int ret; +int ret =0 ; ports =of_get_child_by_name (xdev->dev->of_node,"ports" );if (ports ==NULL ) {
@@ -472,13 +472,14 @@ static int xvip_graph_dma_init(struct xvip_composite_device *xdev)for_each_child_of_node (ports, port) { ret =xvip_graph_dma_init_one (xdev, port); -if (ret <0 ) { +if (ret) {of_node_put (port); -return ret; +break ; } } -return 0 ; +of_node_put (ports); +return ret; }static void xvip_graph_cleanup (struct xvip_composite_device *xdev)
drivers/memory/of_memory.c +1 -0
@@ -135,6 +135,7 @@ const struct lpddr2_timings *of_get_ddr_timings(struct device_node *np_ddr,for_each_child_of_node (np_ddr, np_tim) {if (of_device_is_compatible (np_tim, tim_compat)) {if (of_do_get_timings (np_tim, &timings[i])) { +of_node_put (np_tim);devm_kfree (dev, timings); goto default_timings; }
drivers/mfd/intel_soc_pmic_core.c +1 -0
@@ -118,6 +118,7 @@ static int intel_soc_pmic_i2c_probe(struct i2c_client *i2c,return 0 ; err_del_irq_chip: +pwm_remove_table (crc_pwm_lookup,ARRAY_SIZE (crc_pwm_lookup));regmap_del_irq_chip (pmic->irq, pmic->irq_chip_data);return ret; }
drivers/mfd/lp8788-irq.c +3 -0
@@ -179,6 +179,7 @@ int lp8788_irq_init(struct lp8788 *lp, int irq)IRQF_TRIGGER_FALLING |IRQF_ONESHOT , "lp8788-irq", irqd);if (ret) { +irq_domain_remove (lp->irqdm);dev_err (lp->dev,"failed to create a thread for IRQ_N\n" );return ret; }
@@ -192,4 +193,6 @@ void lp8788_irq_exit(struct lp8788 *lp) {if (lp->irq)free_irq (lp->irq, lp->irqdm); +if (lp->irqdm) +irq_domain_remove (lp->irqdm); }
drivers/mfd/lp8788.c +10 -2
@@ -199,8 +199,16 @@ static int lp8788_probe(struct i2c_client *cl, const struct i2c_device_id *id)if (ret)return ret; -return mfd_add_devices (lp->dev,-1 , lp8788_devs, -ARRAY_SIZE (lp8788_devs),NULL ,0 ,NULL ); + ret =mfd_add_devices (lp->dev,-1 , lp8788_devs, +ARRAY_SIZE (lp8788_devs),NULL ,0 ,NULL ); +if (ret) + goto err_exit_irq; + +return 0 ; + +err_exit_irq: +lp8788_irq_exit (lp); +return ret; }static int lp8788_remove (struct i2c_client *cl)
drivers/mfd/sm501.c +6 -1
@@ -1736,7 +1736,12 @@ static struct platform_driver sm501_plat_driver = {static int __init sm501_base_init (void ) { -platform_driver_register (&sm501_plat_driver); +int ret; + + ret =platform_driver_register (&sm501_plat_driver); +if (ret <0 ) +return ret; +return pci_register_driver (&sm501_pci_driver); }
drivers/mmc/host/au1xmmc.c +2 -1
@@ -1114,8 +1114,9 @@ static int au1xmmc_probe(struct platform_device *pdev)if (host->platdata && host->platdata->cd_setup && !(mmc->caps &MMC_CAP_NEEDS_POLL )) host->platdata->cd_setup (mmc,0 ); -out_clk: +clk_disable_unprepare (host->clk); +out_clk:clk_put (host->clk); out_irq:free_irq (host->irq, host);
drivers/mmc/host/moxart-mmc.c +3 -14
@@ -111,8 +111,8 @@#define CLK_DIV_MASK 0x7f/* REG_BUS_WIDTH */ -#define BUS_WIDTH_8 BIT(2) -#define BUS_WIDTH_4 BIT(1) +#define BUS_WIDTH_4_SUPPORT BIT(3) +#define BUS_WIDTH_4 BIT(2)#define BUS_WIDTH_1 BIT(0)#define MMC_VDD_360 23
@@ -529,9 +529,6 @@ static void moxart_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)case MMC_BUS_WIDTH_4 :writel (BUS_WIDTH_4 , host->base +REG_BUS_WIDTH );break ; -case MMC_BUS_WIDTH_8 : -writel (BUS_WIDTH_8 , host->base +REG_BUS_WIDTH ); -break ;default :writel (BUS_WIDTH_1 , host->base +REG_BUS_WIDTH );break ;
@@ -648,16 +645,8 @@ static int moxart_probe(struct platform_device *pdev)dmaengine_slave_config (host->dma_chan_rx, &cfg); } -switch ((readl (host->base +REG_BUS_WIDTH ) >>3 ) &3 ) { -case 1 : +if (readl (host->base +REG_BUS_WIDTH ) &BUS_WIDTH_4_SUPPORT ) mmc->caps |=MMC_CAP_4_BIT_DATA ; -break ; -case 2 : - mmc->caps |=MMC_CAP_4_BIT_DATA |MMC_CAP_8_BIT_DATA ; -break ; -default : -break ; - }writel (0 , host->base +REG_INTERRUPT_MASK );
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c +1 -0
@@ -792,6 +792,7 @@ static void bnx2x_tpa_stop(struct bnx2x *bp, struct bnx2x_fastpath *fp,BNX2X_ERR ("skb_put is about to fail... pad %d len %d rx_buf_size %d\n" , pad, len, fp->rx_buf_size);bnx2x_panic (); +bnx2x_frag_free (fp, new_data); return; }#endif
drivers/net/ethernet/freescale/fs_enet/mac-fec.c +1 -1
@@ -103,7 +103,7 @@ static int do_pd_setup(struct fs_enet_private *fep)return -EINVAL ; fep->fec.fecp =of_iomap (ofdev->dev.of_node,0 ); -if (!fep->fcc.fccp) +if (!fep->fec.fecp)return -EINVAL ;return 0 ;
drivers/net/usb/qmi_wwan.c +1 -0
@@ -966,6 +966,7 @@ static const struct usb_device_id products[] = { {QMI_FIXED_INTF(0x413c, 0x81b3, 8)}, /* Dell Wireless 5809e Gobi(TM) 4G LTE Mobile Broadband Card (rev3) */ {QMI_FIXED_INTF(0x413c, 0x81b6, 8)}, /* Dell Wireless 5811e */ {QMI_FIXED_INTF(0x413c, 0x81b6, 10)}, /* Dell Wireless 5811e */ + {QMI_FIXED_INTF(0x413c, 0x81c2, 8)}, /* Dell Wireless 5811e */ {QMI_FIXED_INTF(0x413c, 0x81cc, 8)}, /* Dell Wireless 5816e */ {QMI_FIXED_INTF(0x413c, 0x81d7, 0)}, /* Dell Wireless 5821e */ {QMI_FIXED_INTF(0x413c, 0x81d7, 1)}, /* Dell Wireless 5821e preproduction config */
drivers/net/usb/r8152.c +3 -1
@@ -1282,7 +1282,9 @@ static void intr_callback(struct urb *urb) "Stop submitting intr, status %d\n", status);return ;case -EOVERFLOW : -netif_info (tp, intr, tp->netdev,"intr status -EOVERFLOW\n" ); +if (net_ratelimit ()) +netif_info (tp, intr, tp->netdev, +"intr status -EOVERFLOW\n" ); goto resubmit;/* -EPIPE: should clear the halt */ default :
drivers/net/usb/usbnet.c +6 -1
@@ -1559,6 +1559,7 @@ void usbnet_disconnect (struct usb_interface *intf)struct usbnet *dev;struct usb_device *xdev;struct net_device *net; +struct urb *urb; dev =usb_get_intfdata (intf);usb_set_intfdata (intf,NULL );
@@ -1575,7 +1576,11 @@ void usbnet_disconnect (struct usb_interface *intf) net = dev->net;unregister_netdev (net); -usb_scuttle_anchored_urbs (&dev->deferred); +while ((urb =usb_get_from_anchor (&dev->deferred))) { +dev_kfree_skb (urb->context); +kfree (urb->sg); +usb_free_urb (urb); + }if (dev->driver_info->unbind) dev->driver_info->unbind (dev, intf);
drivers/net/wireless/ath/ath10k/mac.c +29 -25
75 lines not on this page · raw message
drivers/net/wireless/mac80211_hwsim.c +2 -0
@@ -3011,6 +3011,8 @@ static int hwsim_cloned_frame_received_nl(struct sk_buff *skb_2, rx_status.band = data2->channel->band; rx_status.rate_idx =nla_get_u32 (info->attrs[HWSIM_ATTR_RX_RATE ]); +if (rx_status.rate_idx >= data2->hw->wiphy->bands[rx_status.band]->n_bitrates) + goto out; rx_status.signal =nla_get_u32 (info->attrs[HWSIM_ATTR_SIGNAL ]);memcpy (IEEE80211_SKB_RXCB (skb), &rx_status,sizeof (rx_status));
drivers/net/wireless/ralink/rt2x00/rt2800lib.c +2 -1
@@ -3386,7 +3386,8 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, reg = (rf->channel <=14 ?0x1c :0x24 ) +2 * rt2x00dev->lna_gain;rt2800_bbp_write_with_rx_chain (rt2x00dev,66 , reg); -rt2800_iq_calibrate (rt2x00dev, rf->channel); +if (rt2x00_rt (rt2x00dev,RT5592 )) +rt2800_iq_calibrate (rt2x00dev, rf->channel); }rt2800_bbp_read (rt2x00dev,4 , &bbp);
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c +9 -9
@@ -1879,13 +1879,6 @@ static int rtl8xxxu_read_efuse(struct rtl8xxxu_priv *priv)/* We have 8 bits to indicate validity */ map_addr = offset *8 ; -if (map_addr >=EFUSE_MAP_LEN ) { -dev_warn (dev,"%s: Illegal map_addr (%04x), " -"efuse corrupt!\n" , - __func__, map_addr); - ret = -EINVAL ; - goto exit; - }for (i =0 ; i <EFUSE_MAX_WORD_UNIT ; i++) {/* Check word enable condition in the section */ if (word_mask &BIT (i)) {
@@ -1896,6 +1889,13 @@ static int rtl8xxxu_read_efuse(struct rtl8xxxu_priv *priv) ret =rtl8xxxu_read_efuse8 (priv, efuse_addr++, &val8);if (ret) goto exit; +if (map_addr >=EFUSE_MAP_LEN -1 ) { +dev_warn (dev,"%s: Illegal map_addr (%04x), " +"efuse corrupt!\n" , + __func__, map_addr); + ret = -EINVAL ; + goto exit; + } priv->efuse_wifi.raw[map_addr++] = val8; ret =rtl8xxxu_read_efuse8 (priv, efuse_addr++, &val8);
@@ -2930,12 +2930,12 @@ bool rtl8xxxu_gen2_simularity_compare(struct rtl8xxxu_priv *priv, }if (!(simubitmap &0x30 ) && priv->tx_paths >1 ) { -/* path B RX OK */ +/* path B TX OK */ for (i =4 ; i <6 ; i++) result[3 ][i] = result[c1][i]; } -if (!(simubitmap &0x30 ) && priv->tx_paths >1 ) { +if (!(simubitmap &0xc0 ) && priv->tx_paths >1 ) {/* path B RX OK */ for (i =6 ; i <8 ; i++) result[3 ][i] = result[c1][i];
drivers/nvme/host/core.c +6 -3
@@ -1044,18 +1044,21 @@ static int nvme_pr_preempt(struct block_device *bdev, u64 old, u64 new, enum pr_type type, bool abort) {u32 cdw10 =nvme_pr_type (type) <<8 | (abort ?2 :1 ); +return nvme_pr_command (bdev, cdw10, old, new, nvme_cmd_resv_acquire); }static int nvme_pr_clear (struct block_device *bdev,u64 key) { -u32 cdw10 =1 | (key ?1 <<3 :0 ); -return nvme_pr_command (bdev, cdw10, key,0 , nvme_cmd_resv_register); +u32 cdw10 =1 | (key ?0 :1 <<3 ); + +return nvme_pr_command (bdev, cdw10, key,0 , nvme_cmd_resv_release); }static int nvme_pr_release (struct block_device *bdev,u64 key,enum pr_type type) { -u32 cdw10 =nvme_pr_type (type) <<8 | (key ?1 <<3 :0 ); +u32 cdw10 =nvme_pr_type (type) <<8 | (key ?0 :1 <<3 ); +return nvme_pr_command (bdev, cdw10, key,0 , nvme_cmd_resv_release); }
drivers/pci/setup-res.c +11 -0
@@ -214,6 +214,17 @@ static int pci_revert_fw_address(struct resource *res, struct pci_dev *dev, root =pci_find_parent_resource (dev, res);if (!root) { +/* +* If dev is behind a bridge, accesses will only reach it +* if res is inside the relevant bridge window. +*/ +if (pci_upstream_bridge (dev)) +return -ENXIO ; + +/* +* On the root bus, assume the host bridge will forward +* everything. +*/ if (res->flags &IORESOURCE_IO ) root = &ioport_resource;else
drivers/platform/x86/msi-laptop.c +4 -7
@@ -609,11 +609,10 @@ static struct dmi_system_id __initdata msi_dmi_table[] = { { .ident = "MSI S270", .matches = { -DMI_MATCH (DMI_SYS_VENDOR ,"MICRO-STAR INT'L CO.,LTD" ), +DMI_MATCH (DMI_SYS_VENDOR ,"MICRO-STAR INT" ),DMI_MATCH (DMI_PRODUCT_NAME ,"MS-1013" ),DMI_MATCH (DMI_PRODUCT_VERSION ,"0131" ), -DMI_MATCH (DMI_CHASSIS_VENDOR , -"MICRO-STAR INT'L CO.,LTD" ) +DMI_MATCH (DMI_CHASSIS_VENDOR ,"MICRO-STAR INT" ) }, .driver_data = &quirk_old_ec_model, .callback = dmi_check_cb
@@ -646,8 +645,7 @@ static struct dmi_system_id __initdata msi_dmi_table[] = {DMI_MATCH (DMI_SYS_VENDOR ,"NOTEBOOK" ),DMI_MATCH (DMI_PRODUCT_NAME ,"SAM2000" ),DMI_MATCH (DMI_PRODUCT_VERSION ,"0131" ), -DMI_MATCH (DMI_CHASSIS_VENDOR , -"MICRO-STAR INT'L CO.,LTD" ) +DMI_MATCH (DMI_CHASSIS_VENDOR ,"MICRO-STAR INT" ) }, .driver_data = &quirk_old_ec_model, .callback = dmi_check_cb
@@ -1069,8 +1067,7 @@ static int __init msi_init(void)return -EINVAL ;/* Register backlight stuff */ - -if (quirks->old_ec_model || +if (quirks->old_ec_model &&acpi_video_get_backlight_type () == acpi_backlight_vendor) {struct backlight_properties props;memset (&props,0 ,sizeof (struct backlight_properties ));
drivers/powercap/intel_rapl.c +3 -0
@@ -1080,6 +1080,9 @@ static u64 rapl_compute_time_window_core(struct rapl_package *rp, u64 value, y = value &0x1f ; value = (1 << y) * (4 + f) * rp->time_unit /4 ; }else { +if (value < rp->time_unit) +return 0 ; +do_div (value, rp->time_unit); y =ilog2 (value); f =div64_u64 (4 * (value - (1 << y)),1 << y);
drivers/regulator/qcom_rpm-regulator.c +12 -12
@@ -820,6 +820,12 @@ static const struct rpm_regulator_data rpm_pm8018_regulators[] = { };static const struct rpm_regulator_data rpm_pm8058_regulators[] = { + {"s0" ,QCOM_RPM_PM8058_SMPS0 , &pm8058_smps,"vdd_s0" }, + {"s1" ,QCOM_RPM_PM8058_SMPS1 , &pm8058_smps,"vdd_s1" }, + {"s2" ,QCOM_RPM_PM8058_SMPS2 , &pm8058_smps,"vdd_s2" }, + {"s3" ,QCOM_RPM_PM8058_SMPS3 , &pm8058_smps,"vdd_s3" }, + {"s4" ,QCOM_RPM_PM8058_SMPS4 , &pm8058_smps,"vdd_s4" }, + {"l0" ,QCOM_RPM_PM8058_LDO0 , &pm8058_nldo,"vdd_l0_l1_lvs" }, {"l1" ,QCOM_RPM_PM8058_LDO1 , &pm8058_nldo,"vdd_l0_l1_lvs" }, {"l2" ,QCOM_RPM_PM8058_LDO2 , &pm8058_pldo,"vdd_l2_l11_l12" },
@@ -847,12 +853,6 @@ static const struct rpm_regulator_data rpm_pm8058_regulators[] = { { "l24", QCOM_RPM_PM8058_LDO24, &pm8058_nldo, "vdd_l23_l24_l25" }, { "l25", QCOM_RPM_PM8058_LDO25, &pm8058_nldo, "vdd_l23_l24_l25" }, - { "s0", QCOM_RPM_PM8058_SMPS0, &pm8058_smps, "vdd_s0" }, - { "s1", QCOM_RPM_PM8058_SMPS1, &pm8058_smps, "vdd_s1" }, - { "s2", QCOM_RPM_PM8058_SMPS2, &pm8058_smps, "vdd_s2" }, - { "s3", QCOM_RPM_PM8058_SMPS3, &pm8058_smps, "vdd_s3" }, - { "s4", QCOM_RPM_PM8058_SMPS4, &pm8058_smps, "vdd_s4" }, - { "lvs0", QCOM_RPM_PM8058_LVS0, &pm8058_switch, "vdd_l0_l1_lvs" }, { "lvs1", QCOM_RPM_PM8058_LVS1, &pm8058_switch, "vdd_l0_l1_lvs" },
@@ -861,6 +861,12 @@ static const struct rpm_regulator_data rpm_pm8058_regulators[] = { };static const struct rpm_regulator_data rpm_pm8901_regulators[] = { + {"s0" ,QCOM_RPM_PM8901_SMPS0 , &pm8901_ftsmps,"vdd_s0" }, + {"s1" ,QCOM_RPM_PM8901_SMPS1 , &pm8901_ftsmps,"vdd_s1" }, + {"s2" ,QCOM_RPM_PM8901_SMPS2 , &pm8901_ftsmps,"vdd_s2" }, + {"s3" ,QCOM_RPM_PM8901_SMPS3 , &pm8901_ftsmps,"vdd_s3" }, + {"s4" ,QCOM_RPM_PM8901_SMPS4 , &pm8901_ftsmps,"vdd_s4" }, + {"l0" ,QCOM_RPM_PM8901_LDO0 , &pm8901_nldo,"vdd_l0" }, {"l1" ,QCOM_RPM_PM8901_LDO1 , &pm8901_pldo,"vdd_l1" }, {"l2" ,QCOM_RPM_PM8901_LDO2 , &pm8901_pldo,"vdd_l2" },
@@ -869,12 +875,6 @@ static const struct rpm_regulator_data rpm_pm8901_regulators[] = { { "l5", QCOM_RPM_PM8901_LDO5, &pm8901_pldo, "vdd_l5" }, { "l6", QCOM_RPM_PM8901_LDO6, &pm8901_pldo, "vdd_l6" }, - { "s0", QCOM_RPM_PM8901_SMPS0, &pm8901_ftsmps, "vdd_s0" }, - { "s1", QCOM_RPM_PM8901_SMPS1, &pm8901_ftsmps, "vdd_s1" }, - { "s2", QCOM_RPM_PM8901_SMPS2, &pm8901_ftsmps, "vdd_s2" }, - { "s3", QCOM_RPM_PM8901_SMPS3, &pm8901_ftsmps, "vdd_s3" }, - { "s4", QCOM_RPM_PM8901_SMPS4, &pm8901_ftsmps, "vdd_s4" }, - { "lvs0", QCOM_RPM_PM8901_LVS0, &pm8901_switch, "lvs0_in" }, { "lvs1", QCOM_RPM_PM8901_LVS1, &pm8901_switch, "lvs1_in" }, { "lvs2", QCOM_RPM_PM8901_LVS2, &pm8901_switch, "lvs2_in" },
drivers/scsi/3w-9xxx.c +1 -1
@@ -2016,7 +2016,7 @@ static int twa_probe(struct pci_dev *pdev, const struct pci_device_id *dev_id) retval =pci_enable_device (pdev);if (retval) {TW_PRINTK (host,TW_DRIVER ,0x34 ,"Failed to enable pci device" ); - goto out_disable_device; +return -ENODEV ; }pci_set_master (pdev);
drivers/scsi/stex.c +9 -8
@@ -653,16 +653,17 @@ stex_queuecommand_lck(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *))return 0 ;case PASSTHRU_CMD :if (cmd->cmnd[1 ] ==PASSTHRU_GET_DRVVER ) { -struct st_drvver ver; +const struct st_drvver ver = { + .major =ST_VER_MAJOR , + .minor =ST_VER_MINOR , + .oem =ST_OEM , + .build =ST_BUILD_VER , + .signature[0 ] =PASSTHRU_SIGNATURE , + .console_id = host->max_id -1 , + .host_no = hba->host->host_no, + };size_t cp_len =sizeof (ver); - ver.major =ST_VER_MAJOR ; - ver.minor =ST_VER_MINOR ; - ver.oem =ST_OEM ; - ver.build =ST_BUILD_VER ; - ver.signature[0 ] =PASSTHRU_SIGNATURE ; - ver.console_id = host->max_id -1 ; - ver.host_no = hba->host->host_no; cp_len =scsi_sg_copy_from_buffer (cmd, &ver, cp_len); cmd->result =sizeof (ver) == cp_len ? DID_OK << 16 | COMMAND_COMPLETE << 8 :
drivers/soc/qcom/smem_state.c +2 -1
@@ -144,6 +144,7 @@ static void qcom_smem_state_release(struct kref *ref) struct qcom_smem_state *state = container_of(ref, struct qcom_smem_state, refcount);list_del (&state->list); +of_node_put (state->of_node);kfree (state); }
@@ -177,7 +178,7 @@ struct qcom_smem_state *qcom_smem_state_register(struct device_node *of_node,kref_init (&state->refcount); - state->of_node = of_node; + state->of_node =of_node_get (of_node); state->ops = *ops; state->priv = priv;
drivers/soc/qcom/smsm.c +13 -7
@@ -515,7 +515,7 @@ static int qcom_smsm_probe(struct platform_device *pdev)for (id =0 ; id < smsm->num_hosts; id++) { ret =smsm_parse_ipc (smsm, id);if (ret <0 ) -return ret; + goto out_put; }/* Acquire the main SMSM state vector */
@@ -523,13 +523,14 @@ static int qcom_smsm_probe(struct platform_device *pdev) smsm->num_entries * sizeof(u32));if (ret <0 && ret != -EEXIST ) {dev_err (&pdev->dev,"unable to allocate shared state entry\n" ); -return ret; + goto out_put; } states =qcom_smem_get (QCOM_SMEM_HOST_ANY ,SMEM_SMSM_SHARED_STATE ,NULL );if (IS_ERR (states)) {dev_err (&pdev->dev,"Unable to acquire shared state entry\n" ); -return PTR_ERR (states); + ret =PTR_ERR (states); + goto out_put; }/* Acquire the list of interrupt mask vectors */
@@ -537,13 +538,14 @@ static int qcom_smsm_probe(struct platform_device *pdev) ret =qcom_smem_alloc (QCOM_SMEM_HOST_ANY ,SMEM_SMSM_CPU_INTR_MASK , size);if (ret <0 && ret != -EEXIST ) {dev_err (&pdev->dev,"unable to allocate smsm interrupt mask\n" ); -return ret; + goto out_put; } intr_mask =qcom_smem_get (QCOM_SMEM_HOST_ANY ,SMEM_SMSM_CPU_INTR_MASK ,NULL );if (IS_ERR (intr_mask)) {dev_err (&pdev->dev,"unable to acquire shared memory interrupt mask\n" ); -return PTR_ERR (intr_mask); + ret =PTR_ERR (intr_mask); + goto out_put; }/* Setup the reference to the local state bits */
@@ -554,7 +556,8 @@ static int qcom_smsm_probe(struct platform_device *pdev) smsm->state =qcom_smem_state_register (local_node, &smsm_state_ops, smsm);if (IS_ERR (smsm->state)) {dev_err (smsm->dev,"failed to register qcom_smem_state\n" ); -return PTR_ERR (smsm->state); + ret =PTR_ERR (smsm->state); + goto out_put; }/* Register handlers for remote processor entries of interest. */
@@ -584,16 +587,19 @@ static int qcom_smsm_probe(struct platform_device *pdev) }platform_set_drvdata (pdev, smsm); +of_node_put (local_node);return 0 ; unwind_interfaces: +of_node_put (node);for (id =0 ; id < smsm->num_entries; id++)if (smsm->entries[id].domain)irq_domain_remove (smsm->entries[id].domain);qcom_smem_state_unregister (smsm->state); - +out_put: +of_node_put (local_node);return ret; }
drivers/spi/spi-omap-100k.c +1 -0
@@ -425,6 +425,7 @@ static int omap1_spi100k_probe(struct platform_device *pdev)return status; err_fck: +pm_runtime_disable (&pdev->dev);clk_disable_unprepare (spi100k->fck); err_ick:clk_disable_unprepare (spi100k->ick);
drivers/spi/spi-qup.c +17 -4
@@ -956,8 +956,10 @@ static int spi_qup_pm_resume_runtime(struct device *device)return ret; ret =clk_prepare_enable (controller->cclk); -if (ret) +if (ret) { +clk_disable_unprepare (controller->iclk);return ret; + }/* Disable clocks auto gaiting */ config =readl_relaxed (controller->base +QUP_CONFIG );
@@ -1003,14 +1005,25 @@ static int spi_qup_resume(struct device *device)return ret; ret =clk_prepare_enable (controller->cclk); -if (ret) +if (ret) { +clk_disable_unprepare (controller->iclk);return ret; + } ret =spi_qup_set_state (controller,QUP_STATE_RESET );if (ret) -return ret; + goto disable_clk; - return spi_master_resume(master); + ret =spi_master_resume (master); +if (ret) + goto disable_clk; + +return 0 ; + +disable_clk: +clk_disable_unprepare (controller->cclk); +clk_disable_unprepare (controller->iclk); + return ret; }#endif /* CONFIG_PM_SLEEP */
drivers/thermal/intel_powerclamp.c +1 -3
@@ -518,9 +518,7 @@ static int start_power_clamp(void)get_online_cpus ();/* prefer BSP */ - control_cpu =0 ; -if (!cpu_online (control_cpu)) - control_cpu =smp_processor_id (); + control_cpu =cpumask_first (cpu_online_mask); clamping = true;schedule_delayed_work (&poll_pkg_cstate_work,0 );
drivers/tty/serial/8250/8250_port.c +6 -1
@@ -3146,8 +3146,13 @@ static void serial8250_console_restore(struct uart_8250_port *up)unsigned int baud, quot, frac =0 ; termios.c_cflag = port->cons->cflag; -if (port->state->port.tty && termios.c_cflag ==0 ) + termios.c_ispeed = port->cons->ispeed; + termios.c_ospeed = port->cons->ospeed; +if (port->state->port.tty && termios.c_cflag ==0 ) { termios.c_cflag = port->state->port.tty->termios.c_cflag; + termios.c_ispeed = port->state->port.tty->termios.c_ispeed; + termios.c_ospeed = port->state->port.tty->termios.c_ospeed; + } baud =serial8250_get_baud_rate (port, &termios,NULL ); quot =serial8250_get_divisor (up, baud, &frac);
drivers/tty/serial/jsm/jsm_driver.c +2 -1
@@ -221,7 +221,8 @@ static int jsm_probe_one(struct pci_dev *pdev, const struct pci_device_id *ent)break ;default : -return -ENXIO ; + rc = -ENXIO ; + goto out_kfree_brd; } rc =request_irq (brd->irq, brd->bd_ops->intr,IRQF_SHARED ,"JSM" , brd);
drivers/tty/serial/xilinx_uartps.c +2 -0
@@ -363,6 +363,8 @@ static irqreturn_t cdns_uart_isr(int irq, void *dev_id) isrstatus &= ~CDNS_UART_IXR_TXEMPTY ; } + isrstatus &= port->read_status_mask; + isrstatus &= ~port->ignore_status_mask;/* * Skip RX processing if RX is disabled as RXEMPTY will never be set * as read bytes will not be removed from the FIFO.
drivers/usb/host/xhci-mem.c +6 -1
@@ -703,7 +703,7 @@ struct xhci_stream_info *xhci_alloc_stream_info(struct xhci_hcd *xhci, num_stream_ctxs, &stream_info->ctx_array_dma, mem_flags);if (!stream_info->stream_ctx_array) - goto cleanup_ctx; + goto cleanup_ring_array;memset (stream_info->stream_ctx_array,0 ,sizeof (struct xhci_stream_ctx )*num_stream_ctxs);
@@ -764,6 +764,11 @@ struct xhci_stream_info *xhci_alloc_stream_info(struct xhci_hcd *xhci, }xhci_free_command (xhci, stream_info->free_streams_command); cleanup_ctx: +xhci_free_stream_ctx (xhci, + stream_info->num_stream_ctxs, + stream_info->stream_ctx_array, + stream_info->ctx_array_dma); +cleanup_ring_array:kfree (stream_info->stream_rings); cleanup_info:kfree (stream_info);
drivers/usb/misc/idmouse.c +4 -4
@@ -183,10 +183,6 @@ static int idmouse_create_image(struct usb_idmouse *dev) bytes_read += bulk_read; } -/* reset the device */ -reset: -ftip_command (dev,FTIP_RELEASE ,0 ,0 ); -/* check for valid image */ /* right border should be black (0x00) */ for (bytes_read =sizeof (HEADER )-1 +WIDTH -1 ; bytes_read <IMGSIZE ; bytes_read +=WIDTH )
@@ -198,6 +194,10 @@ static int idmouse_create_image(struct usb_idmouse *dev)if (dev->bulk_in_buffer[bytes_read] !=0xFF )return -EAGAIN ; +/* reset the device */ +reset: +ftip_command (dev,FTIP_RELEASE ,0 ,0 ); +/* should be IMGSIZE == 65040 */ dev_dbg (&dev->interface->dev,"read %d bytes fingerprint data\n" , bytes_read);
drivers/usb/mon/mon_bin.c +5 -0
@@ -1265,6 +1265,11 @@ static int mon_bin_mmap(struct file *filp, struct vm_area_struct *vma) {/* don't do anything here: "fault" will set up page table entries */ vma->vm_ops = &mon_bin_vm_ops; + +if (vma->vm_flags &VM_WRITE ) +return -EPERM ; + + vma->vm_flags &= ~VM_MAYWRITE ; vma->vm_flags |=VM_DONTEXPAND |VM_DONTDUMP ; vma->vm_private_data = filp->private_data;mon_bin_vma_open (vma);
drivers/usb/musb/musb_gadget.c +3 -0
@@ -785,6 +785,9 @@ static void rxstate(struct musb *musb, struct musb_request *req)musb_writew (epio,MUSB_RXCSR , csr); buffer_aint_mapped: + fifo_count = min_t(unsigned int, + request->length - request->actual, + (unsigned int )fifo_count);musb_read_fifo (musb_ep->hw_ep, fifo_count, (u8 *) (request->buf + request->actual)); request->actual += fifo_count;
drivers/usb/serial/ftdi_sio.c +1 -2
@@ -1340,8 +1340,7 @@ static __u32 get_ftdi_divisor(struct tty_struct *tty,case 38400 : div_value = ftdi_sio_b38400;break ;case 57600 : div_value = ftdi_sio_b57600;break ;case 115200 : div_value = ftdi_sio_b115200;break ; - }/* baud */ -if (div_value ==0 ) { +default :dev_dbg (dev,"%s - Baudrate (%d) requested is not supported\n" , __func__, baud); div_value = ftdi_sio_b9600;
drivers/usb/serial/qcserial.c +1 -0
@@ -181,6 +181,7 @@ static const struct usb_device_id id_table[] = { {DEVICE_SWI(0x413c, 0x81b3)}, /* Dell Wireless 5809e Gobi(TM) 4G LTE Mobile Broadband Card (rev3) */ {DEVICE_SWI(0x413c, 0x81b5)}, /* Dell Wireless 5811e QDL */ {DEVICE_SWI(0x413c, 0x81b6)}, /* Dell Wireless 5811e QDL */ + {DEVICE_SWI(0x413c, 0x81c2)}, /* Dell Wireless 5811e */ {DEVICE_SWI(0x413c, 0x81cb)}, /* Dell Wireless 5816e QDL */ {DEVICE_SWI(0x413c, 0x81cc)}, /* Dell Wireless 5816e */ {DEVICE_SWI(0x413c, 0x81cf)}, /* Dell Wireless 5819 */
drivers/usb/storage/unusual_devs.h +0 -6
@@ -1294,12 +1294,6 @@ UNUSUAL_DEV( 0x090a, 0x1200, 0x0000, 0x9999, USB_SC_RBC, USB_PR_BULK, NULL, 0 ), -UNUSUAL_DEV (0x090c ,0x1000 ,0x1100 ,0x1100 , -"Samsung" , -"Flash Drive FIT" , -USB_SC_DEVICE ,USB_PR_DEVICE ,NULL , -US_FL_MAX_SECTORS_64 ), -/* aeb */ UNUSUAL_DEV( 0x090c, 0x1132, 0x0000, 0xffff, "Feiya",
drivers/usb/storage/unusual_uas.h +21 -0
@@ -62,6 +62,13 @@ UNUSUAL_DEV(0x059f, 0x1061, 0x0000, 0x9999, USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_IGNORE_UAS), +/* Reported-by: Hongling Zeng <[email protected]> */ +UNUSUAL_DEV (0x090c ,0x2000 ,0x0000 ,0x9999 , +"Hiksemi" , +"External HDD" , +USB_SC_DEVICE ,USB_PR_DEVICE ,NULL , + US_FL_IGNORE_UAS), +/* * Apricorn USB3 dongle sometimes returns "USBSUSBSUSBS" in response to SCSI * commands in UAS mode. Observed with the 1.28 firmware; are there others?
@@ -142,6 +149,13 @@ UNUSUAL_DEV(0x0bc2, 0xab2a, 0x0000, 0x9999, USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_NO_ATA_1X), +/* Reported-by: Hongling Zeng <[email protected]> */ +UNUSUAL_DEV (0x0bda ,0x9210 ,0x0000 ,0x9999 , +"Hiksemi" , +"External HDD" , +USB_SC_DEVICE ,USB_PR_DEVICE ,NULL , +US_FL_IGNORE_UAS ), +/* Reported-by: Benjamin Tissoires <[email protected]> */ UNUSUAL_DEV(0x13fd, 0x3940, 0x0000, 0x9999, "Initio Corporation",
@@ -184,6 +198,13 @@ UNUSUAL_DEV(0x154b, 0xf00d, 0x0000, 0x9999, USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_NO_ATA_1X), +/* Reported-by: Hongling Zeng <[email protected]> */ +UNUSUAL_DEV (0x17ef ,0x3899 ,0x0000 ,0x9999 , +"Thinkplus" , +"External HDD" , +USB_SC_DEVICE ,USB_PR_DEVICE ,NULL , +US_FL_IGNORE_UAS ), +/* Reported-by: Hans de Goede <[email protected]> */ UNUSUAL_DEV(0x2109, 0x0711, 0x0000, 0x9999, "VIA",
drivers/video/fbdev/smscufx.c +13 -1
@@ -140,6 +140,8 @@ static int ufx_submit_urb(struct ufx_data *dev, struct urb * urb, size_t len);static int ufx_alloc_urb_list (struct ufx_data *dev,int count,size_t size);static void ufx_free_urb_list (struct ufx_data *dev); +static DEFINE_MUTEX (disconnect_mutex); +/* reads a control register */ static int ufx_reg_read (struct ufx_data *dev,u32 index,u32 *data) {
@@ -1073,9 +1075,13 @@ static int ufx_ops_open(struct fb_info *info, int user)if (user ==0 && !console)return -EBUSY ; +mutex_lock (&disconnect_mutex); +/* If the USB device is gone, we don't accept new opens */ -if (dev->virtualized) +if (dev->virtualized) { +mutex_unlock (&disconnect_mutex);return -ENODEV ; + } dev->fb_count++;
@@ -1100,6 +1106,8 @@ static int ufx_ops_open(struct fb_info *info, int user)pr_debug ("open /dev/fb%d user=%d fb_info=%p count=%d" , info->node, user, info, dev->fb_count); +mutex_unlock (&disconnect_mutex); +return 0 ; }
@@ -1761,6 +1769,8 @@ static void ufx_usb_disconnect(struct usb_interface *interface) {struct ufx_data *dev; +mutex_lock (&disconnect_mutex); + dev =usb_get_intfdata (interface);pr_debug ("USB disconnect starting\n" );
@@ -1781,6 +1791,8 @@ static void ufx_usb_disconnect(struct usb_interface *interface)kref_put (&dev->kref, ufx_free);/* consider ufx_data freed */ + +mutex_unlock (&disconnect_mutex); }static struct usb_driver ufx_driver = {
drivers/video/fbdev/stifb.c +1 -1
@@ -1259,7 +1259,7 @@ static int __init stifb_init_fb(struct sti_struct *sti, int bpp_pref)/* limit fbsize to max visible screen size */ if (fix->smem_len > yres*fix->line_length) - fix->smem_len = yres*fix->line_length; + fix->smem_len =ALIGN (yres*fix->line_length,4 *1024 *1024 ); fix->accel =FB_ACCEL_NONE ;
fs/ceph/file.c +6 -3
@@ -354,6 +354,11 @@ int ceph_atomic_open(struct inode *dir, struct dentry *dentry, err =ceph_init_dentry (dentry);if (err <0 )return err; +/* +* Do not truncate the file, since atomic_open is called before the +* permission check. The caller will do the truncation afterward. +*/ + flags &= ~O_TRUNC ;if (flags &O_CREAT ) { err =ceph_pre_init_acls (dir, &mode, &acls);
@@ -384,9 +389,7 @@ int ceph_atomic_open(struct inode *dir, struct dentry *dentry, req->r_args.open.mask =cpu_to_le32 (mask); req->r_locked_dir = dir;/* caller holds dir->i_mutex */ - err =ceph_mdsc_do_request (mdsc, - (flags & (O_CREAT |O_TRUNC )) ? dir :NULL , - req); + err =ceph_mdsc_do_request (mdsc, (flags &O_CREAT ) ? dir :NULL , req); err =ceph_handle_snapdir (req, dentry, err);if (err) goto out_req;
fs/dlm/ast.c +4 -2
@@ -198,13 +198,13 @@ void dlm_add_cb(struct dlm_lkb *lkb, uint32_t flags, int mode, int status,if (!prev_seq) {kref_get (&lkb->lkb_ref); +mutex_lock (&ls->ls_cb_mutex);if (test_bit (LSFL_CB_DELAY , &ls->ls_flags)) { -mutex_lock (&ls->ls_cb_mutex);list_add (&lkb->lkb_cb_list, &ls->ls_cb_delay); -mutex_unlock (&ls->ls_cb_mutex); }else {queue_work (ls->ls_callback_wq, &lkb->lkb_cb_work); } +mutex_unlock (&ls->ls_cb_mutex); } out:mutex_unlock (&lkb->lkb_cb_mutex);
@@ -284,7 +284,9 @@ void dlm_callback_stop(struct dlm_ls *ls)void dlm_callback_suspend (struct dlm_ls *ls) { +mutex_lock (&ls->ls_cb_mutex);set_bit (LSFL_CB_DELAY , &ls->ls_flags); +mutex_unlock (&ls->ls_cb_mutex);if (ls->ls_callback_wq)flush_workqueue (ls->ls_callback_wq);
fs/dlm/lock.c +8 -8
@@ -2888,24 +2888,24 @@ static int set_unlock_args(uint32_t flags, void *astarg, struct dlm_args *args)static int validate_lock_args (struct dlm_ls *ls,struct dlm_lkb *lkb,struct dlm_args *args) { -int rv = -EINVAL ; +int rv = -EBUSY ;if (args->flags &DLM_LKF_CONVERT ) { -if (lkb->lkb_flags &DLM_IFL_MSTCPY ) +if (lkb->lkb_status !=DLM_LKSTS_GRANTED ) goto out; -if (args->flags &DLM_LKF_QUECVT && - !__quecvt_compat_matrix[lkb->lkb_grmode+1 ][args->mode+1 ]) +if (lkb->lkb_wait_type) goto out; - rv = -EBUSY ; -if (lkb->lkb_status !=DLM_LKSTS_GRANTED ) +if (is_overlap (lkb)) goto out; -if (lkb->lkb_wait_type) + rv = -EINVAL ; +if (lkb->lkb_flags &DLM_IFL_MSTCPY ) goto out; -if (is_overlap (lkb)) +if (args->flags &DLM_LKF_QUECVT && + !__quecvt_compat_matrix[lkb->lkb_grmode+1 ][args->mode+1 ]) goto out; }
fs/ext4/file.c +6 -0
@@ -538,6 +538,12 @@ static loff_t ext4_seek_data(struct file *file, loff_t offset, loff_t maxsize)inode_unlock (inode);return -ENXIO ; } +/* +* Make sure inline data cannot be created anymore since we are going +* to allocate blocks for DIO. We know the inode does not have any +* inline data now because ext4_dio_supported() checked for that. +*/ +ext4_clear_inode_state (inode,EXT4_STATE_MAY_INLINE_DATA ); blkbits = inode->i_sb->s_blocksize_bits; start = offset >> blkbits;
fs/ext4/inode.c +7 -0
@@ -1215,6 +1215,13 @@ static int ext4_write_begin(struct file *file, struct address_space *mapping, page =grab_cache_page_write_begin (mapping, index, flags);if (!page)return -ENOMEM ; +/* +* The same as page allocation, we prealloc buffer heads before +* starting the handle. +*/ +if (!page_has_buffers (page)) +create_empty_buffers (page, inode->i_sb->s_blocksize,0 ); +unlock_page (page); retry_journal:
fs/ext4/resize.c +1 -1
@@ -2052,7 +2052,7 @@ int ext4_resize_fs(struct super_block *sb, ext4_fsblk_t n_blocks_count) goto out; } -if (ext4_blocks_count (es) == n_blocks_count) +if (ext4_blocks_count (es) == n_blocks_count && n_blocks_count_retry ==0 ) goto out; err =ext4_alloc_flex_bg_array (sb, n_group +1 );
fs/ext4/super.c +2 -1
@@ -2911,6 +2911,7 @@ static int ext4_lazyinit_thread(void *arg)unsigned long next_wakeup, cur;BUG_ON (NULL == eli); +set_freezable (); cont_thread:while (true) {
@@ -5381,7 +5382,7 @@ static int ext4_write_info(struct super_block *sb, int type)handle_t *handle;/* Data block + inode block */ - handle =ext4_journal_start (d_inode (sb->s_root),EXT4_HT_QUOTA ,2 ); + handle =ext4_journal_start_sb (sb,EXT4_HT_QUOTA ,2 );if (IS_ERR (handle))return PTR_ERR (handle); ret =dquot_commit_info (sb, type);
fs/f2fs/extent_cache.c +1 -2
@@ -650,9 +650,8 @@ void f2fs_drop_extent_tree(struct inode *inode)if (!f2fs_may_extent_tree (inode))return ; -set_inode_flag (inode,FI_NO_EXTENT ); -write_lock (&et->lock); +set_inode_flag (inode,FI_NO_EXTENT );__free_extent_tree (sbi, et);__drop_largest_extent (inode,0 ,UINT_MAX );write_unlock (&et->lock);
fs/inode.c +3 -4
@@ -164,8 +164,6 @@ int inode_init_always(struct super_block *sb, struct inode *inode) inode->i_wb_frn_history =0 ;#endif -if (security_inode_alloc (inode)) - goto out;spin_lock_init (&inode->i_lock);lockdep_set_class (&inode->i_lock, &sb->s_type->i_lock_key);
@@ -192,11 +190,12 @@ int inode_init_always(struct super_block *sb, struct inode *inode) inode->i_fsnotify_mask =0 ;#endif inode->i_flctx =NULL ; + +if (unlikely (security_inode_alloc (inode))) +return -ENOMEM ;this_cpu_inc (nr_inodes);return 0 ; -out: -return -ENOMEM ; }EXPORT_SYMBOL (inode_init_always);
fs/nilfs2/inode.c +19 -1
@@ -344,6 +344,7 @@ struct inode *nilfs_new_inode(struct inode *dir, umode_t mode)struct inode *inode;struct nilfs_inode_info *ii;struct nilfs_root *root; +struct buffer_head *bh;int err = -ENOMEM ;ino_t ino;
@@ -359,11 +360,26 @@ struct inode *nilfs_new_inode(struct inode *dir, umode_t mode) ii->i_state =BIT (NILFS_I_NEW ); ii->i_root = root; - err =nilfs_ifile_create_inode (root->ifile, &ino, &ii->i_bh); + err =nilfs_ifile_create_inode (root->ifile, &ino, &bh);if (unlikely (err)) goto failed_ifile_create_inode;/* reference count of i_bh inherits from nilfs_mdt_read_block() */ +if (unlikely (ino <NILFS_USER_INO )) { +nilfs_msg (sb,KERN_WARNING , +"inode bitmap is inconsistent for reserved inodes" ); +do { +brelse (bh); + err =nilfs_ifile_create_inode (root->ifile, &ino, &bh); +if (unlikely (err)) + goto failed_ifile_create_inode; + }while (ino <NILFS_USER_INO ); + +nilfs_msg (sb,KERN_INFO , +"repaired inode bitmap for reserved inodes" ); + } + ii->i_bh = bh; +atomic64_inc (&root->inodes_count);inode_init_owner (inode, dir, mode); inode->i_ino = ino;
@@ -455,6 +471,8 @@ int nilfs_read_inode_common(struct inode *inode, inode->i_atime.tv_nsec =le32_to_cpu (raw_inode->i_mtime_nsec); inode->i_ctime.tv_nsec =le32_to_cpu (raw_inode->i_ctime_nsec); inode->i_mtime.tv_nsec =le32_to_cpu (raw_inode->i_mtime_nsec); +if (nilfs_is_metadata_file_inode (inode) && !S_ISREG (inode->i_mode)) +return -EIO ;/* this inode is for metadata and corrupted */ if (inode->i_nlink ==0 )return -ESTALE ;/* this inode is deleted */
fs/nilfs2/segment.c +13 -8
@@ -888,9 +888,11 @@ static int nilfs_segctor_create_checkpoint(struct nilfs_sc_info *sci)nilfs_mdt_mark_dirty (nilfs->ns_cpfile);nilfs_cpfile_put_checkpoint ( nilfs->ns_cpfile, nilfs->ns_cno, bh_cp); - }else -WARN_ON (err == -EINVAL || err == -ENOENT ); - + }else if (err == -EINVAL || err == -ENOENT ) { +nilfs_error (sci->sc_super, +"checkpoint creation failed due to metadata corruption." ); + err = -EIO ; + }return err; }
@@ -904,7 +906,11 @@ static int nilfs_segctor_fill_in_checkpoint(struct nilfs_sc_info *sci) err =nilfs_cpfile_get_checkpoint (nilfs->ns_cpfile, nilfs->ns_cno,0 , &raw_cp, &bh_cp);if (unlikely (err)) { -WARN_ON (err == -EINVAL || err == -ENOENT ); +if (err == -EINVAL || err == -ENOENT ) { +nilfs_error (sci->sc_super, +"checkpoint finalization failed due to metadata corruption." ); + err = -EIO ; + } goto failed_ibh; } raw_cp->cp_snapshot_list.ssl_next =0 ;
@@ -2796,10 +2802,9 @@ int nilfs_attach_log_writer(struct super_block *sb, struct nilfs_root *root)inode_attach_wb (nilfs->ns_bdev->bd_inode,NULL ); err =nilfs_segctor_start_thread (nilfs->ns_writer); -if (err) { -kfree (nilfs->ns_writer); - nilfs->ns_writer =NULL ; - } +if (unlikely (err)) +nilfs_detach_log_writer (sb); +return err; }
fs/ntfs/super.c +2 -1
@@ -2108,7 +2108,8 @@ static bool load_system_files(ntfs_volume *vol)// TODO: Initialize security. /* Get the extended system files' directory inode. */ vol->extend_ino =ntfs_iget (sb, FILE_Extend); -if (IS_ERR (vol->extend_ino) ||is_bad_inode (vol->extend_ino)) { +if (IS_ERR (vol->extend_ino) ||is_bad_inode (vol->extend_ino) || + !S_ISDIR (vol->extend_ino->i_mode)) {if (!IS_ERR (vol->extend_ino))iput (vol->extend_ino);ntfs_error (sb,"Failed to load $Extend." );
fs/quota/quota_tree.c +38 -0
@@ -79,6 +79,35 @@ static ssize_t write_blk(struct qtree_mem_dqinfo *info, uint blk, char *buf)return ret; } +static inline int do_check_range (struct super_block *sb,const char *val_name, +uint val,uint min_val,uint max_val) +{ +if (val < min_val || val > max_val) { +quota_error (sb,"Getting %s %u out of range %u-%u" , + val_name, val, min_val, max_val); +return -EUCLEAN ; + } + +return 0 ; +} + +static int check_dquot_block_header (struct qtree_mem_dqinfo *info, +struct qt_disk_dqdbheader *dh) +{ +int err =0 ; + + err =do_check_range (info->dqi_sb,"dqdh_next_free" , +le32_to_cpu (dh->dqdh_next_free),0 , + info->dqi_blocks -1 ); +if (err) +return err; + err =do_check_range (info->dqi_sb,"dqdh_prev_free" , +le32_to_cpu (dh->dqdh_prev_free),0 , + info->dqi_blocks -1 ); + +return err; +} +/* Remove empty block from list and return it */ static int get_free_dqblk (struct qtree_mem_dqinfo *info) {
@@ -93,6 +122,9 @@ static int get_free_dqblk(struct qtree_mem_dqinfo *info) ret =read_blk (info, blk, buf);if (ret <0 ) goto out_buf; + ret =check_dquot_block_header (info, dh); +if (ret) + goto out_buf; info->dqi_free_blk =le32_to_cpu (dh->dqdh_next_free); }else {
@@ -240,6 +272,9 @@ static uint find_free_dqentry(struct qtree_mem_dqinfo *info, *err =read_blk (info, blk, buf);if (*err <0 ) goto out_buf; + *err =check_dquot_block_header (info, dh); +if (*err) + goto out_buf; }else { blk =get_free_dqblk (info);if ((int )blk <0 ) {
@@ -432,6 +467,9 @@ static int free_dqentry(struct qtree_mem_dqinfo *info, struct dquot *dquot, goto out_buf; } dh = (struct qt_disk_dqdbheader *)buf; + ret =check_dquot_block_header (info, dh); +if (ret) + goto out_buf;le16_add_cpu (&dh->dqdh_entries,-1 );if (!le16_to_cpu (dh->dqdh_entries)) {/* Block got free? */ ret =remove_free_dqentry (info, buf, blk);
include/linux/ata.h +21 -18
@@ -572,6 +572,18 @@ struct ata_bmdma_prd { ((((id)[ATA_ID_SATA_CAPABILITY ] !=0x0000 ) && \ ((id)[ATA_ID_SATA_CAPABILITY ] !=0xffff )) && \ ((id)[ATA_ID_FEATURE_SUPP] & (1 << 2))) +#define ata_id_has_devslp (id) \ + ((((id)[ATA_ID_SATA_CAPABILITY] != 0x0000) && \ + ((id)[ATA_ID_SATA_CAPABILITY] != 0xffff)) && \ + ((id)[ATA_ID_FEATURE_SUPP] & (1 << 8))) +#define ata_id_has_ncq_autosense (id) \ + ((((id)[ATA_ID_SATA_CAPABILITY] != 0x0000) && \ + ((id)[ATA_ID_SATA_CAPABILITY] != 0xffff)) && \ + ((id)[ATA_ID_FEATURE_SUPP] & (1 << 7))) +#define ata_id_has_dipm (id) \ + ((((id)[ATA_ID_SATA_CAPABILITY] != 0x0000) && \ + ((id)[ATA_ID_SATA_CAPABILITY] != 0xffff)) && \ + ((id)[ATA_ID_FEATURE_SUPP] & (1 << 3)))#define ata_id_iordy_disable (id) ((id)[ATA_ID_CAPABILITY] & (1 << 10))#define ata_id_has_iordy (id) ((id)[ATA_ID_CAPABILITY] & (1 << 11))#define ata_id_u32 (id,n) \
@@ -584,9 +596,6 @@ struct ata_bmdma_prd {#define ata_id_cdb_intr (id) (((id)[ATA_ID_CONFIG] & 0x60) == 0x20)#define ata_id_has_da (id) ((id)[ATA_ID_SATA_CAPABILITY_2] & (1 << 4)) -#define ata_id_has_devslp (id) ((id)[ATA_ID_FEATURE_SUPP] & (1 << 8)) -#define ata_id_has_ncq_autosense (id) \ - ((id)[ATA_ID_FEATURE_SUPP] & (1 << 7))static inline bool ata_id_has_hipm (const u16 *id) {
@@ -598,17 +607,6 @@ static inline bool ata_id_has_hipm(const u16 *id)return val & (1 <<9 ); } -static inline bool ata_id_has_dipm (const u16 *id) -{ -u16 val = id[ATA_ID_FEATURE_SUPP ]; - -if (val ==0 || val ==0xffff ) -return false; - -return val & (1 <<3 ); -} - -static inline bool ata_id_has_fua (const u16 *id) {if ((id[ATA_ID_CFSSE ] &0xC000 ) !=0x4000 )
@@ -777,16 +775,21 @@ static inline bool ata_id_has_read_log_dma_ext(const u16 *id)static inline bool ata_id_has_sense_reporting (const u16 *id) { -if (!(id[ATA_ID_CFS_ENABLE_2 ] & (1 <<15 ))) +if (!(id[ATA_ID_CFS_ENABLE_2 ] &BIT (15 ))) +return false; +if ((id[ATA_ID_COMMAND_SET_3 ] & (BIT (15 ) |BIT (14 ))) !=BIT (14 ))return false; -return id[ATA_ID_COMMAND_SET_3 ] & (1 <<6 ); +return id[ATA_ID_COMMAND_SET_3 ] &BIT (6 ); }static inline bool ata_id_sense_reporting_enabled (const u16 *id) { -if (!(id[ATA_ID_CFS_ENABLE_2 ] & (1 <<15 ))) +if (!ata_id_has_sense_reporting (id)) +return false; +/* ata_id_has_sense_reporting() == true, word 86 must have bit 15 set */ +if ((id[ATA_ID_COMMAND_SET_4 ] & (BIT (15 ) |BIT (14 ))) !=BIT (14 ))return false; -return id[ATA_ID_COMMAND_SET_4 ] & (1 <<6 ); +return id[ATA_ID_COMMAND_SET_4 ] &BIT (6 ); }/**
include/linux/dynamic_debug.h +1 -1
@@ -167,7 +167,7 @@ static inline int ddebug_remove_module(const char *mod)static inline int ddebug_dyndbg_module_param_cb (char *param,char *val,const char *modname) { -if (strstr (param,"dyndbg" )) { +if (!strcmp (param,"dyndbg" )) {/* avoid pr_warn(), which wants pr_fmt() fully defined */ printk (KERN_WARNING "dyndbg param is supported only in " "CONFIG_DYNAMIC_DEBUG builds\n" );
include/linux/tcp.h +1 -1
@@ -249,7 +249,7 @@ struct tcp_sock {u32 packets_out;/* Packets which are "in flight" */ u32 retrans_out;/* Retransmitted packets out */ u32 max_packets_out;/* max packets_out in last window */ -u32 max_packets_seq;/* right edge of max_packets_out flight */ +u32 cwnd_usage_seq;/* right edge of cwnd usage tracking flight */ u16 urg_data;/* Saved octet of OOB data and control flags */ u8 ecn_flags;/* ECN status bits. */
include/net/ieee802154_netdev.h +43 -0
55 lines not on this page · raw message
include/net/sock.h +1 -1
@@ -378,7 +378,7 @@ struct sock {#ifdef CONFIG_XFRM struct xfrm_policy __rcu *sk_policy[2 ];#endif -struct dst_entry *sk_rx_dst; +struct dst_entry __rcu *sk_rx_dst;struct dst_entry __rcu *sk_dst_cache;/* Note: 32bit hole on 64bit arches */ atomic_t sk_wmem_alloc;
include/net/tcp.h +4 -1
@@ -1155,11 +1155,14 @@ static inline bool tcp_is_cwnd_limited(const struct sock *sk) {const struct tcp_sock *tp =tcp_sk (sk); +if (tp->is_cwnd_limited) +return true; +/* If in slow start, ensure cwnd grows to twice what was ACKed. */ if (tcp_in_slow_start (tp))return tp->snd_cwnd <2 * tp->max_packets_out; -return tp->is_cwnd_limited; +return false; }/* Something is really bad, we could not queue an additional packet,
include/scsi/scsi_cmnd.h +1 -1
@@ -214,7 +214,7 @@ static inline struct scsi_data_buffer *scsi_out(struct scsi_cmnd *cmd) }static inline int scsi_sg_copy_from_buffer (struct scsi_cmnd *cmd, -void *buf,int buflen) +const void *buf,int buflen) {return sg_copy_from_buffer (scsi_sglist (cmd),scsi_sg_count (cmd), buf, buflen);
kernel/gcov/gcc_4_7.c +16 -2
@@ -32,6 +32,13 @@#define GCOV_TAG_FUNCTION_LENGTH 3 +/* Since GCC 12.1 sizes are in BYTES and not in WORDS (4B). */ +#if (__GNUC__ >=12 ) +#define GCOV_UNIT_SIZE 4 +#else +#define GCOV_UNIT_SIZE 1 +#endif +static struct gcov_info *gcov_info_head;/**
@@ -438,12 +445,18 @@ static size_t convert_to_gcda(char *buffer, struct gcov_info *info) pos +=store_gcov_u32 (buffer, pos, info->version); pos +=store_gcov_u32 (buffer, pos, info->stamp); +#if (__GNUC__ >=12 ) +/* Use zero as checksum of the compilation unit. */ + pos +=store_gcov_u32 (buffer, pos,0 ); +#endif +for (fi_idx =0 ; fi_idx < info->n_functions; fi_idx++) { fi_ptr = info->functions[fi_idx];/* Function record. */ pos +=store_gcov_u32 (buffer, pos,GCOV_TAG_FUNCTION ); - pos +=store_gcov_u32 (buffer, pos,GCOV_TAG_FUNCTION_LENGTH ); + pos +=store_gcov_u32 (buffer, pos, +GCOV_TAG_FUNCTION_LENGTH *GCOV_UNIT_SIZE ); pos +=store_gcov_u32 (buffer, pos, fi_ptr->ident); pos +=store_gcov_u32 (buffer, pos, fi_ptr->lineno_checksum); pos +=store_gcov_u32 (buffer, pos, fi_ptr->cfg_checksum);
@@ -457,7 +470,8 @@ static size_t convert_to_gcda(char *buffer, struct gcov_info *info)/* Counter record. */ pos +=store_gcov_u32 (buffer, pos,GCOV_TAG_FOR_COUNTER (ct_idx)); - pos +=store_gcov_u32 (buffer, pos, ci_ptr->num *2 ); + pos +=store_gcov_u32 (buffer, pos, + ci_ptr->num *2 *GCOV_UNIT_SIZE );for (cv_idx =0 ; cv_idx < ci_ptr->num; cv_idx++) { pos += store_gcov_u64(buffer, pos,
kernel/trace/ring_buffer.c +44 -2
77 lines not on this page · raw message
lib/dynamic_debug.c +7 -4
@@ -327,10 +327,6 @@ static int ddebug_parse_query(char *words[], int nwords, }memset (query,0 ,sizeof (*query)); -if (modname) -/* support $modname.dyndbg=<multiple queries> */ - query->module = modname; -for (i =0 ; i < nwords; i +=2 ) {if (!strcmp (words[i],"func" )) { rc =check_set (&query->function, words[i+1 ],"func" );
@@ -379,6 +375,13 @@ static int ddebug_parse_query(char *words[], int nwords,if (rc)return rc; } +if (!query->module && modname) +/* +* support $modname.dyndbg=<multiple queries>, when +* not given in the query itself +*/ + query->module = modname; +vpr_info_dq (query,"parsed" );return 0 ; }
mm/page_alloc.c +12 -0
@@ -3987,6 +3987,18 @@ void *__alloc_page_frag(struct page_frag_cache *nc,/* reset page count bias and offset to start of new frag */ nc->pagecnt_bias =PAGE_FRAG_CACHE_MAX_SIZE +1 ; offset = size - fragsz; +if (unlikely (offset <0 )) { +/* +* The caller is trying to allocate a fragment +* with fragsz > PAGE_SIZE but the cache isn't big +* enough to satisfy the request, this may +* happen in low memory conditions. +* We don't release the cache page because +* it could make memory pressure worse +* so we simply return NULL here. +*/ +return NULL ; + } } nc->pagecnt_bias--;
net/bluetooth/hci_sysfs.c +3 -0
@@ -47,6 +47,9 @@ void hci_conn_add_sysfs(struct hci_conn *conn)BT_DBG ("conn %p" , conn); +if (device_is_registered (&conn->dev)) +return ; +dev_set_name (&conn->dev,"%s:%d" , hdev->name, conn->handle);if (device_add (&conn->dev) <0 ) {
net/bluetooth/l2cap_core.c +13 -4
@@ -63,6 +63,9 @@ static void l2cap_send_disconn_req(struct l2cap_chan *chan, int err);static void l2cap_tx (struct l2cap_chan *chan,struct l2cap_ctrl *control,struct sk_buff_head *skbs,u8 event); +static void l2cap_retrans_timeout (struct work_struct *work); +static void l2cap_monitor_timeout (struct work_struct *work); +static void l2cap_ack_timeout (struct work_struct *work);static inline u8 bdaddr_type (u8 link_type,u8 bdaddr_type) {
@@ -470,6 +473,9 @@ struct l2cap_chan *l2cap_chan_create(void)write_unlock (&chan_list_lock);INIT_DELAYED_WORK (&chan->chan_timer, l2cap_chan_timeout); +INIT_DELAYED_WORK (&chan->retrans_timer, l2cap_retrans_timeout); +INIT_DELAYED_WORK (&chan->monitor_timer, l2cap_monitor_timeout); +INIT_DELAYED_WORK (&chan->ack_timer, l2cap_ack_timeout); chan->state =BT_OPEN ;
@@ -3144,10 +3150,6 @@ int l2cap_ertm_init(struct l2cap_chan *chan) chan->rx_state =L2CAP_RX_STATE_RECV ; chan->tx_state =L2CAP_TX_STATE_XMIT ; -INIT_DELAYED_WORK (&chan->retrans_timer, l2cap_retrans_timeout); -INIT_DELAYED_WORK (&chan->monitor_timer, l2cap_monitor_timeout); -INIT_DELAYED_WORK (&chan->ack_timer, l2cap_ack_timeout); -skb_queue_head_init (&chan->srej_q); err =l2cap_seq_list_init (&chan->srej_list, chan->tx_win);
@@ -4037,6 +4039,12 @@ static int l2cap_connect_create_rsp(struct l2cap_conn *conn, } } + chan =l2cap_chan_hold_unless_zero (chan); +if (!chan) { + err = -EBADSLT ; + goto unlock; + } + err =0 ;l2cap_chan_lock (chan);
@@ -4066,6 +4074,7 @@ static int l2cap_connect_create_rsp(struct l2cap_conn *conn, }l2cap_chan_unlock (chan); +l2cap_chan_put (chan); unlock:mutex_unlock (&conn->chan_lock);
net/can/bcm.c +4 -3
@@ -285,6 +285,7 @@ static void bcm_can_tx(struct bcm_op *op)struct sk_buff *skb;struct net_device *dev;struct canfd_frame *cf = op->frames + op->cfsiz * op->currframe; +int err;/* no target device? => exit */ if (!op->ifindex)
@@ -309,11 +310,11 @@ static void bcm_can_tx(struct bcm_op *op)/* send with loopback */ skb->dev = dev;can_skb_set_owner (skb, op->sk); -can_send (skb,1 ); + err =can_send (skb,1 ); +if (!err) + op->frames_abs++; -/* update statistics */ op->currframe++; - op->frames_abs++;/* reached last frame? */ if (op->currframe >= op->nframes)
net/ieee802154/socket.c +27 -19
88 lines not on this page · raw message
net/ipv4/af_inet.c +1 -1
@@ -156,7 +156,7 @@ void inet_sock_destruct(struct sock *sk)kfree (rcu_dereference_protected (inet->inet_opt,1 ));dst_release (rcu_dereference_check (sk->sk_dst_cache,1 )); -dst_release (sk->sk_rx_dst); +dst_release (rcu_dereference_protected (sk->sk_rx_dst,1 ));sk_refcnt_debug_dec (sk); }EXPORT_SYMBOL (inet_sock_destruct);
net/ipv4/tcp.c +13 -6
@@ -2299,6 +2299,8 @@ int tcp_disconnect(struct sock *sk, int flags) tp->packets_out =0 ; tp->snd_ssthresh =TCP_INFINITE_SSTHRESH ; tp->snd_cwnd_cnt =0 ; + tp->is_cwnd_limited =0 ; + tp->max_packets_out =0 ; tp->window_clamp =0 ; tp->delivered =0 ;if (icsk->icsk_ca_ops->release)
@@ -2316,8 +2318,7 @@ int tcp_disconnect(struct sock *sk, int flags)tcp_init_send_head (sk);memset (&tp->rx_opt,0 ,sizeof (tp->rx_opt));__sk_dst_reset (sk); -dst_release (sk->sk_rx_dst); - sk->sk_rx_dst =NULL ; +dst_release (xchg ((__force struct dst_entry **)&sk->sk_rx_dst,NULL ));tcp_saved_syn_free (tp); tp->segs_in =0 ; tp->segs_out =0 ;
@@ -3129,12 +3130,16 @@ static void __tcp_alloc_md5sig_pool(void)* to memory. See smp_rmb() in tcp_get_md5sig_pool() */ smp_wmb (); - tcp_md5sig_pool_populated = true; +/* Paired with READ_ONCE() from tcp_alloc_md5sig_pool() +* and tcp_get_md5sig_pool(). +*/ +WRITE_ONCE (tcp_md5sig_pool_populated, true); }bool tcp_alloc_md5sig_pool (void ) { -if (unlikely (!tcp_md5sig_pool_populated)) { +/* Paired with WRITE_ONCE() from __tcp_alloc_md5sig_pool() */ +if (unlikely (!READ_ONCE (tcp_md5sig_pool_populated))) {mutex_lock (&tcp_md5sig_mutex);if (!tcp_md5sig_pool_populated)
@@ -3142,7 +3147,8 @@ bool tcp_alloc_md5sig_pool(void)mutex_unlock (&tcp_md5sig_mutex); } -return tcp_md5sig_pool_populated; +/* Paired with WRITE_ONCE() from __tcp_alloc_md5sig_pool() */ +return READ_ONCE (tcp_md5sig_pool_populated); }EXPORT_SYMBOL (tcp_alloc_md5sig_pool);
@@ -3158,7 +3164,8 @@ struct tcp_md5sig_pool *tcp_get_md5sig_pool(void) {local_bh_disable (); -if (tcp_md5sig_pool_populated) { +/* Paired with WRITE_ONCE() from __tcp_alloc_md5sig_pool() */ +if (READ_ONCE (tcp_md5sig_pool_populated)) {/* coupled with smp_wmb() in __tcp_alloc_md5sig_pool() */ smp_rmb ();return this_cpu_ptr (&tcp_md5sig_pool);
net/ipv4/tcp_input.c +1 -1
@@ -5481,7 +5481,7 @@ void tcp_rcv_established(struct sock *sk, struct sk_buff *skb, {struct tcp_sock *tp =tcp_sk (sk); -if (unlikely (!sk->sk_rx_dst)) +if (unlikely (!rcu_access_pointer (sk->sk_rx_dst)))inet_csk (sk)->icsk_af_ops->sk_rx_dst_set (sk, skb);/* * Header prediction.
net/ipv4/tcp_ipv4.c +8 -5
@@ -1404,15 +1404,18 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)struct sock *rsk;if (sk->sk_state ==TCP_ESTABLISHED ) {/* Fast path */ -struct dst_entry *dst = sk->sk_rx_dst; +struct dst_entry *dst; + + dst =rcu_dereference_protected (sk->sk_rx_dst, +lockdep_sock_is_held (sk));sock_rps_save_rxhash (sk, skb);sk_mark_napi_id (sk, skb);if (dst) { if (inet_sk(sk)->rx_dst_ifindex != skb->skb_iif ||
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/reuseport_bpf.c +1 -1
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.