Linux 4.14.199
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.14.199 kernel.
All users of the 4.14 kernel series must upgrade.
The updated 4.14.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.14.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/arc/boot/dts/hsdk.dts | 6 arch/arc/plat-eznps/include/plat/ctop.h | 1 arch/arm/boot/dts/bcm5301x.dtsi | 2 arch/arm/boot/dts/socfpga_arria10.dtsi | 2 arch/arm/boot/dts/vfxxx.dtsi | 2 arch/arm64/boot/dts/broadcom/northstar2/ns2.dtsi | 2 arch/mips/Kconfig | 1 arch/mips/kvm/mips.c | 2 arch/mips/sni/a20r.c | 9 arch/powerpc/configs/pasemi_defconfig | 1 arch/powerpc/configs/ppc6xx_defconfig | 1 arch/powerpc/kernel/dma-iommu.c | 3 arch/x86/configs/i386_defconfig | 2 arch/x86/configs/x86_64_defconfig | 2 arch/x86/kvm/vmx.c | 1 drivers/atm/firestream.c | 1 drivers/block/rbd.c | 12 drivers/clk/rockchip/clk-rk3228.c | 2 drivers/cpufreq/intel_pstate.c | 12 drivers/dma/acpi-dma.c | 4 drivers/gpu/drm/mediatek/mtk_drm_drv.c | 7 drivers/gpu/drm/mediatek/mtk_hdmi.c | 26 + drivers/hv/channel_mgmt.c | 7 drivers/i2c/algos/i2c-algo-pca.c | 35 +- drivers/i2c/busses/i2c-i801.c | 21 - drivers/iio/accel/bmc150-accel-core.c | 15 - drivers/iio/accel/kxsd9.c | 16 - drivers/iio/accel/mma7455_core.c | 16 - drivers/iio/accel/mma8452.c | 11 drivers/iio/adc/ina2xx-adc.c | 11 drivers/iio/adc/max1118.c | 10 drivers/iio/adc/mcp3422.c | 16 - drivers/iio/adc/ti-adc081c.c | 11 drivers/iio/adc/ti-adc084s021.c | 10 drivers/iio/adc/ti-ads1015.c | 10 drivers/iio/chemical/ccs811.c | 13 drivers/iio/light/ltr501.c | 15 - drivers/iio/light/max44000.c | 12 drivers/iio/magnetometer/ak8975.c | 16 - drivers/infiniband/core/verbs.c | 2 drivers/infiniband/sw/rxe/rxe.c | 3 drivers/infiniband/sw/rxe/rxe_mr.c | 1 drivers/infiniband/sw/rxe/rxe_verbs.c | 2 drivers/input/mouse/trackpoint.c | 10 drivers/input/mouse/trackpoint.h | 10 drivers/input/serio/i8042-x86ia64io.h | 16 + drivers/mmc/host/sdhci-msm.c | 18 + drivers/net/hyperv/netvsc_drv.c | 2 drivers/net/wan/hdlc_cisco.c | 1 drivers/net/wan/lapbether.c | 3 drivers/nfc/st95hf/core.c | 2 drivers/nvme/host/fc.c | 1 drivers/rapidio/Kconfig | 2 drivers/regulator/core.c | 46 +-- drivers/scsi/libfc/fc_disc.c | 2 drivers/scsi/libsas/sas_ata.c | 5 drivers/scsi/lpfc/lpfc_els.c | 4 drivers/scsi/pm8001/pm8001_sas.c | 2 drivers/spi/spi-loopback-test.c | 2 drivers/spi/spi.c | 9 drivers/staging/greybus/audio_topology.c | 29 + drivers/staging/wlan-ng/hfa384x_usb.c | 5 drivers/staging/wlan-ng/prism2usb.c | 19 - drivers/target/iscsi/iscsi_target.c | 17 + drivers/target/iscsi/iscsi_target_login.c | 6 drivers/target/iscsi/iscsi_target_login.h | 3 drivers/target/iscsi/iscsi_target_nego.c | 3 drivers/tty/serial/8250/8250_pci.c | 11 drivers/usb/class/usblp.c | 5 drivers/usb/core/message.c | 91 ++---- drivers/usb/core/quirks.c | 4 drivers/usb/core/sysfs.c | 5 drivers/usb/host/ehci-hcd.c | 1 drivers/usb/host/ehci-hub.c | 1 drivers/usb/serial/ftdi_sio.c | 1 drivers/usb/serial/ftdi_sio_ids.h | 1 drivers/usb/serial/option.c | 22 - drivers/usb/storage/uas.c | 14 drivers/usb/typec/ucsi/ucsi_acpi.c | 4 drivers/video/console/Kconfig | 46 --- drivers/video/console/vgacon.c | 220 --------------- drivers/video/fbdev/core/bitblit.c | 11 drivers/video/fbdev/core/fbcon.c | 336 ----------------------- drivers/video/fbdev/core/fbcon.h | 2 drivers/video/fbdev/core/fbcon_ccw.c | 11 drivers/video/fbdev/core/fbcon_cw.c | 11 drivers/video/fbdev/core/fbcon_ud.c | 11 drivers/video/fbdev/core/tileblit.c | 2 drivers/video/fbdev/vga16fb.c | 2 fs/btrfs/extent-tree.c | 19 - fs/btrfs/ioctl.c | 3 fs/btrfs/print-tree.c | 12 fs/btrfs/volumes.c | 10 fs/f2fs/node.c | 3 fs/gfs2/glops.c | 2 fs/gfs2/log.c | 2 fs/gfs2/trans.c | 2 fs/nfs/nfs4proc.c | 7 fs/xfs/libxfs/xfs_attr_leaf.c | 4 include/linux/i2c-algo-pca.h | 15 + include/soc/nps/common.h | 6 include/uapi/linux/kvm.h | 5 kernel/gcov/gcc_4_7.c | 4 mm/percpu.c | 2 net/core/skbuff.c | 10 net/sunrpc/rpcb_clnt.c | 4 sound/hda/hdac_device.c | 2 sound/pci/hda/patch_hdmi.c | 5 tools/perf/tests/pmu.c | 1 tools/perf/util/pmu.c | 11 tools/perf/util/pmu.h | 1 112 files changed, 597 insertions(+), 918 deletions(-)
Adam Borowski (1):
x86/defconfig: Enable CONFIG_USB_XHCI_HCD=y
Aleksander Morgado (1):
USB: serial: option: add support for SIM7070/SIM7080/SIM7090 modules
Alexey Kardashevskiy (1):
powerpc/dma: Fix dma_map_ops::get_required_mask
Angelo Compagnucci (2):
iio: adc: mcp3422: fix locking scope
iio: adc: mcp3422: fix locking on error path
Bjørn Mork (1):
USB: serial: option: support dynamic Quectel USB compositions
Bob Peterson (1):
gfs2: initialize transaction tr_ailX_lists earlier
Chris Healy (1):
ARM: dts: vfxxx: Add syscon compatible with OCOTP
Darrick J. Wong (1):
xfs: initialize the shortform attr header padding entry
David Milburn (1):
nvme-fc: cancel async events before freeing event struct
Dinghao Liu (4):
RDMA/rxe: Fix memleak in rxe_mem_init_user
NFC: st95hf: Fix memleak in st95hf_in_send_cmd
firestream: Fix memleak in fs_open
scsi: pm8001: Fix memleak in pm8001_exec_internal_task_abort
Dinh Nguyen (1):
ARM: dts: socfpga: fix register entry for timer3 on Arria10
Douglas Anderson (1):
mmc: sdhci-msm: Add retries when all tuning phases are found valid
Evan Nimmo (1):
i2c: algo: pca: Reapply i2c bus settings after reset
Evgeniy Didin (1):
ARC: [plat-hsdk]: Switch ethernet phy-mode to rgmii-id
Filipe Manana (1):
btrfs: fix wrong address when faulting in pages in the search ioctl
Florian Fainelli (2):
ARM: dts: BCM5301X: Fixed QSPI compatible string
arm64: dts: ns2: Fixed QSPI compatible string
Greg Kroah-Hartman (1):
Linux 4.14.199
Gustav Wiklander (1):
spi: Fix memory leak on splited transfers
Haiyang Zhang (1):
hv_netvsc: Remove "unlikely" from netvsc_select_queue
Hanjun Guo (1):
dmaengine: acpi: Put the CSRT table after using it
Hans de Goede (1):
Input: i8042 - add Entroware Proteus EL07R4 to nomux and reset lists
Heikki Krogerus (1):
usb: typec: ucsi: acpi: Check the _DEP dependencies
Hou Pu (1):
scsi: target: iscsi: Fix hang in iscsit_access_np() when getting tpg->np_login_sem
Huacai Chen (1):
KVM: MIPS: Change the definition of kvm type
Ilya Dryomov (1):
rbd: require global CAP_SYS_ADMIN for mapping and unmapping
J. Bruce Fields (1):
SUNRPC: stop printk reading past end of string
James Smart (1):
scsi: lpfc: Fix FLOGI/PLOGI receive race condition in pt2pt discovery
Javed Hasan (1):
scsi: libfc: Fix for double free()
Jonathan Cameron (12):
iio:light:ltr501 Fix timestamp alignment issue. iio:accel:bmc150-accel: Fix timestamp alignment and prevent data leak. iio:adc:ti-adc084s021 Fix alignment and data leak issues. iio:adc:ina2xx Fix timestamp alignment issue. iio:adc:max1118 Fix alignment of timestamp and data leak issues iio:adc:ti-adc081c Fix alignment and data leak issues iio:magnetometer:ak8975 Fix alignment and data leak issues. iio:light:max44000 Fix timestamp alignment and prevent data leak. iio:chemical:ccs811: Fix timestamp alignment and prevent data leak.
iio: accel: kxsd9: Fix alignment of local buffer. iio:accel:mma7455: Fix timestamp alignment and prevent data leak. iio:accel:mma8452: Fix timestamp alignment and prevent data leak.
Josef Bacik (1):
btrfs: fix lockdep splat in add_missing_dev
Kamal Heib (2):
RDMA/rxe: Drop pointless checks in rxe_init_ports RDMA/core: Fix reported speed and width
Laurent Pinchart (1):
rapidio: Replace 'select' DMAENGINES 'with depends on'
Leon Romanovsky (1):
gcov: Disable gcov build with GCC 10
Linus Torvalds (3):
fbcon: remove soft scrollback code
fbcon: remove now unusued 'softback_lines' cursor() argument
vgacon: remove software scrollback support
Luo Jiaxing (1):
scsi: libsas: Set data_dir as DMA_NONE if libata marks qc as NODATA
Mathias Nyman (1):
usb: Fix out of sync data toggle if a configured device is reconfigured
Maxim Kochetkov (1):
iio: adc: ti-ads1015: fix conversion when CONFIG_PM is not set
Miaohe Lin (1):
net: handle the return value of pskb_carve_frag_list() correctly
Michael Kelley (1):
Drivers: hv: vmbus: Add timeout to vmbus_wait_for_unload
Michał Mirosław (1):
regulator: push allocation in set_consumer_device_supply() out of lock
Mohan Kumar (1):
ALSA: hda: Fix 2 channel swapping for Tegra
Namhyung Kim (1):
perf test: Free formats for perf pmu parse test
Nathan Chancellor (1):
clk: rockchip: Fix initialization of mux_pll_src_4plls_p
Olga Kornievskaia (1):
NFSv4.1 handle ERR_DELAY error reclaiming locking state on delegation recall
Oliver Neukum (2):
USB: UAS: fix disconnect by unplugging a hub
usblp: fix race between disconnect() and read()
Patrick Riphagen (1):
USB: serial: ftdi_sio: add IDs for Xsens Mti USB converter
Penghao (1):
USB: quirks: Add USB_QUIRK_IGNORE_REMOTE_WAKEUP quirk for BYD zhaoxin notebook
Peter Oberparleiter (1):
gcov: add support for GCC 10.1
Qu Wenruo (1):
btrfs: require only sector size alignment for parent eb bytenr
Quentin Perret (1):
ehci-hcd: Move include to keep CRC stable
Rafael J. Wysocki (1):
cpufreq: intel_pstate: Refuse to turn off with HWP enabled
Rander Wang (1):
ALSA: hda: fix a runtime pm issue in SOF when integrated GPU is disabled
Rustam Kovhaev (1):
staging: wlan-ng: fix out of bounds read in prism2sta_probe_usb()
Sahitya Tummala (1):
f2fs: fix indefinite loop scanning for free nid
Sunghyun Jin (1):
percpu: fix first chunk size calculation for populated bitmap
Tetsuo Handa (2):
video: fbdev: fix OOB read in vga_8planes_imageblit()
fbcon: Fix user font detection test at fbcon_resize().
Thomas Bogendoerfer (2):
MIPS: SNI: Fix MIPS_L1_CACHE_SHIFT
MIPS: SNI: Fix spurious interrupts
Tobias Diedrich (1):
serial: 8250_pci: Add Realtek 816a and 816b
Vaibhav Agarwal (1):
staging: greybus: audio: fix uninitialized value issue
Varun Prakash (1):
scsi: target: iscsi: Fix data digest calculation
Vincent Huang (1):
Input: trackpoint - add new trackpoint variant IDs
Vincent Whitchurch (1):
spi: spi-loopback-test: Fix out-of-bounds read
Vineet Gupta (2):
ARC: HSDK: wireup perf irq irqchip/eznps: Fix build error for !ARC700 builds
Volker Rümelin (1):
i2c: i801: Fix resume bug
Wanpeng Li (1):
KVM: VMX: Don't freeze guest when event delivery causes an APIC-access exit
Xie He (3):
drivers/net/wan/lapbether: Added needed_tailroom drivers/net/wan/lapbether: Set network_header before transmitting drivers/net/wan/hdlc_cisco: Add hard_header_len
Yi Zhang (1):
RDMA/rxe: Fix the parent sysfs read when the interface has 15 chars
Yu Kuai (2):
drm/mediatek: Add exception handing in mtk_drm_probe() if component init fail drm/mediatek: Add missing put_device() call in mtk_hdmi_dt_parse_pdata()
Zeng Tao (1):
usb: core: fix slab-out-of-bounds Read in read_descriptors
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 14 -SUBLEVEL = 198 +SUBLEVEL = 199 EXTRAVERSION = NAME = Petit Gorille
arch/arc/boot/dts/hsdk.dts +4 -2
@@ -79,6 +79,8 @@ arcpct: pct { compatible = "snps,archs-pct"; + interrupt-parent = <&cpu_intc>; + interrupts = <20>; }; /* TIMER0 with interrupt for clockevent */
@@ -161,7 +163,7 @@ reg = <0x8000 0x2000>; interrupts = <10>; interrupt-names = "macirq"; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; snps,pbl = <32>; snps,multicast-filter-bins = <256>; clocks = <&gmacclk>;
@@ -177,7 +179,7 @@ #address-cells = <1>; #size-cells = <0>; compatible = "snps,dwmac-mdio"; - phy0: ethernet-phy@0 { + phy0: ethernet-phy@0 { /* Micrel KSZ9031 */ reg = <0>; ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>; ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
arch/arc/plat-eznps/include/plat/ctop.h +0 -1
@@ -43,7 +43,6 @@#define CTOP_AUX_DPC (CTOP_AUX_BASE + 0x02C)#define CTOP_AUX_LPC (CTOP_AUX_BASE + 0x030)#define CTOP_AUX_EFLAGS (CTOP_AUX_BASE + 0x080) -#define CTOP_AUX_IACK (CTOP_AUX_BASE + 0x088)#define CTOP_AUX_GPA1 (CTOP_AUX_BASE + 0x08C)#define CTOP_AUX_UDMC (CTOP_AUX_BASE + 0x300)
arch/arm/boot/dts/bcm5301x.dtsi +1 -1
@@ -426,7 +426,7 @@ }; spi@18029200 { - compatible = "brcm,spi-bcm-qspi", "brcm,spi-nsp-qspi"; + compatible = "brcm,spi-nsp-qspi", "brcm,spi-bcm-qspi"; reg = <0x18029200 0x184>, <0x18029000 0x124>, <0x1811b408 0x004>,
arch/arm/boot/dts/socfpga_arria10.dtsi +1 -1
@@ -779,7 +779,7 @@ timer3: timer3@ffd00100 { compatible = "snps,dw-apb-timer"; interrupts = <0 118 IRQ_TYPE_LEVEL_HIGH>; - reg = <0xffd01000 0x100>; + reg = <0xffd00100 0x100>; clocks = <&l4_sys_free_clk>; clock-names = "timer"; };
arch/arm/boot/dts/vfxxx.dtsi +1 -1
@@ -527,7 +527,7 @@ }; ocotp: ocotp@400a5000 { - compatible = "fsl,vf610-ocotp"; + compatible = "fsl,vf610-ocotp", "syscon"; reg = <0x400a5000 0x1000>; clocks = <&clks VF610_CLK_OCOTP>; };
arch/arm64/boot/dts/broadcom/northstar2/ns2.dtsi +1 -1
@@ -745,7 +745,7 @@ }; qspi: spi@66470200 { - compatible = "brcm,spi-bcm-qspi", "brcm,spi-ns2-qspi"; + compatible = "brcm,spi-ns2-qspi", "brcm,spi-bcm-qspi"; reg = <0x66470200 0x184>, <0x66470000 0x124>, <0x67017408 0x004>,
arch/mips/Kconfig +1 -0
@@ -856,6 +856,7 @@ config SNI_RM select I8253 select I8259 select ISA + select MIPS_L1_CACHE_SHIFT_6 select SWAP_IO_SPACE if CPU_BIG_ENDIAN select SYS_HAS_CPU_R4X00 select SYS_HAS_CPU_R5000
arch/mips/kvm/mips.c +2 -0
@@ -131,6 +131,8 @@ void kvm_arch_check_processor_compat(void *rtn)int kvm_arch_init_vm (struct kvm *kvm,unsigned long type) {switch (type) { +case KVM_VM_MIPS_AUTO : +break ;#ifdef CONFIG_KVM_MIPS_VZ case KVM_VM_MIPS_VZ :#else
arch/mips/sni/a20r.c +7 -2
@@ -143,7 +143,10 @@ static struct platform_device sc26xx_pdev = { }, }; -static u32 a20r_ack_hwint (void ) +/* +* Trigger chipset to update CPU's CAUSE IP field +*/ +static u32 a20r_update_cause_ip (void ) {u32 status =read_c0_status ();
@@ -205,12 +208,14 @@ static void a20r_hwint(void)int irq;clear_c0_status (IE_IRQ0 ); - status =a20r_ack_hwint (); + status =a20r_update_cause_ip (); cause =read_c0_cause (); irq =ffs (((cause & status) >>8 ) &0xf8 );if (likely (irq >0 ))do_IRQ (SNI_A20R_IRQ_BASE + irq -1 ); + +a20r_update_cause_ip ();set_c0_status (IE_IRQ0 ); }
arch/powerpc/configs/pasemi_defconfig +0 -1
@@ -111,7 +111,6 @@ CONFIG_FB_NVIDIA=y CONFIG_FB_NVIDIA_I2C=y CONFIG_FB_RADEON=y # CONFIG_LCD_CLASS_DEVICE is not set -CONFIG_VGACON_SOFT_SCROLLBACK=y CONFIG_LOGO=y CONFIG_SOUND=y CONFIG_SND=y
arch/powerpc/configs/ppc6xx_defconfig +0 -1
@@ -781,7 +781,6 @@ CONFIG_FB_TRIDENT=m CONFIG_FB_SM501=m CONFIG_FB_IBM_GXT4500=y CONFIG_LCD_PLATFORM=m -CONFIG_VGACON_SOFT_SCROLLBACK=y CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y CONFIG_LOGO=y
arch/powerpc/kernel/dma-iommu.c +2 -1
@@ -100,7 +100,8 @@ static u64 dma_iommu_get_required_mask(struct device *dev)if (!tbl)return 0 ; - mask =1ULL < (fls_long (tbl->it_offset + tbl->it_size) -1 ); + mask =1ULL << (fls_long (tbl->it_offset + tbl->it_size) + + tbl->it_page_shift -1 ); mask += mask -1 ;return mask;
arch/x86/configs/i386_defconfig +1 -1
@@ -217,7 +217,6 @@ CONFIG_FB_MODE_HELPERS=y CONFIG_FB_TILEBLITTING=y CONFIG_FB_EFI=y # CONFIG_LCD_CLASS_DEVICE is not set -CONFIG_VGACON_SOFT_SCROLLBACK=y CONFIG_LOGO=y # CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_VGA16 is not set
@@ -247,6 +246,7 @@ CONFIG_USB_HIDDEV=y CONFIG_USB=y CONFIG_USB_ANNOUNCE_NEW_DEVICES=y CONFIG_USB_MON=y +CONFIG_USB_XHCI_HCD=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_TT_NEWSCHED=y CONFIG_USB_OHCI_HCD=y
arch/x86/configs/x86_64_defconfig +1 -1
@@ -213,7 +213,6 @@ CONFIG_FB_MODE_HELPERS=y CONFIG_FB_TILEBLITTING=y CONFIG_FB_EFI=y # CONFIG_LCD_CLASS_DEVICE is not set -CONFIG_VGACON_SOFT_SCROLLBACK=y CONFIG_LOGO=y # CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_VGA16 is not set
@@ -243,6 +242,7 @@ CONFIG_USB_HIDDEV=y CONFIG_USB=y CONFIG_USB_ANNOUNCE_NEW_DEVICES=y CONFIG_USB_MON=y +CONFIG_USB_XHCI_HCD=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_TT_NEWSCHED=y CONFIG_USB_OHCI_HCD=y
arch/x86/kvm/vmx.c +1 -0
@@ -9144,6 +9144,7 @@ static int vmx_handle_exit(struct kvm_vcpu *vcpu) (exit_reason !=EXIT_REASON_EXCEPTION_NMI && exit_reason !=EXIT_REASON_EPT_VIOLATION && exit_reason !=EXIT_REASON_PML_FULL && + exit_reason !=EXIT_REASON_APIC_ACCESS && exit_reason != EXIT_REASON_TASK_SWITCH)) { vcpu->run->exit_reason = KVM_EXIT_INTERNAL_ERROR; vcpu->run->internal.suberror =KVM_INTERNAL_ERROR_DELIVERY_EV ;
drivers/atm/firestream.c +1 -0
@@ -1013,6 +1013,7 @@ static int fs_open(struct atm_vcc *atm_vcc) error =make_rate (pcr, r, &tmc0,NULL );if (error) {kfree (tc); +kfree (vcc);return error; } }
drivers/block/rbd.c +12 -0
@@ -4534,6 +4534,9 @@ static ssize_t rbd_config_info_show(struct device *dev, {struct rbd_device *rbd_dev =dev_to_rbd_dev (dev); +if (!capable (CAP_SYS_ADMIN )) +return -EPERM ; +return sprintf (buf,"%s\n" , rbd_dev->config_info); }
@@ -4635,6 +4638,9 @@ static ssize_t rbd_image_refresh(struct device *dev,struct rbd_device *rbd_dev =dev_to_rbd_dev (dev);int ret; +if (!capable (CAP_SYS_ADMIN )) +return -EPERM ; + ret =rbd_dev_refresh (rbd_dev);if (ret)return ret;
@@ -6159,6 +6165,9 @@ static ssize_t do_rbd_add(struct bus_type *bus,bool read_only;int rc; +if (!capable (CAP_SYS_ADMIN )) +return -EPERM ; +if (!try_module_get (THIS_MODULE ))return -ENODEV ;
@@ -6311,6 +6320,9 @@ static ssize_t do_rbd_remove(struct bus_type *bus,bool force = false;int ret; +if (!capable (CAP_SYS_ADMIN )) +return -EPERM ; + dev_id =-1 ; opt_buf[0 ] ='\0' ;sscanf (buf,"%d %5s" , &dev_id, opt_buf);
drivers/clk/rockchip/clk-rk3228.c +1 -1
@@ -144,7 +144,7 @@ PNAME(mux_usb480m_p) = { "usb480m_phy", "xin24m" };PNAME (mux_hdmiphy_p) = {"hdmiphy_phy" ,"xin24m" };PNAME (mux_aclk_cpu_src_p) = {"cpll_aclk_cpu" ,"gpll_aclk_cpu" ,"hdmiphy_aclk_cpu" }; -PNAME (mux_pll_src_4plls_p) = {"cpll" ,"gpll" ,"hdmiphy" "usb480m" }; +PNAME (mux_pll_src_4plls_p) = {"cpll" ,"gpll" ,"hdmiphy" ,"usb480m" };PNAME (mux_pll_src_3plls_p) = {"cpll" ,"gpll" ,"hdmiphy" };PNAME (mux_pll_src_2plls_p) = {"cpll" ,"gpll" };PNAME (mux_sclk_hdmi_cec_p) = {"cpll" ,"gpll" ,"xin24m" };
drivers/cpufreq/intel_pstate.c +9 -3
@@ -2098,9 +2098,15 @@ static int intel_pstate_update_status(const char *buf, size_t size) {int ret; -if (size ==3 && !strncmp (buf,"off" , size)) -return intel_pstate_driver ? -intel_pstate_unregister_driver () : -EINVAL ; +if (size ==3 && !strncmp (buf,"off" , size)) { +if (!intel_pstate_driver) +return -EINVAL ; + +if (hwp_active) +return -EBUSY ; + +return intel_pstate_unregister_driver (); + }if (size ==6 && !strncmp (buf,"active" , size)) {if (intel_pstate_driver) {
drivers/dma/acpi-dma.c +3 -1
@@ -131,11 +131,13 @@ static void acpi_dma_parse_csrt(struct acpi_device *adev, struct acpi_dma *adma)if (ret <0 ) {dev_warn (&adev->dev,"error in parsing resource group\n" ); -return ; +break ; } grp = (struct acpi_csrt_group *)((void *)grp + grp->length); } + +acpi_put_table ((struct acpi_table_header *)csrt); }/**
drivers/gpu/drm/mediatek/mtk_drm_drv.c +6 -1
@@ -538,8 +538,13 @@ static int mtk_drm_probe(struct platform_device *pdev)pm_runtime_disable (dev); err_node:of_node_put (private->mutex_node); -for (i =0 ; i <DDP_COMPONENT_ID_MAX ; i++) +for (i =0 ; i <DDP_COMPONENT_ID_MAX ; i++) {of_node_put (private->comp_node[i]); +if (private->ddp_comp[i]) { +put_device (private->ddp_comp[i]->larb_dev); + private->ddp_comp[i] =NULL ; + } + }return ret; }
drivers/gpu/drm/mediatek/mtk_hdmi.c +18 -8
@@ -1476,25 +1476,30 @@ static int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi *hdmi,dev_err (dev,"Failed to get system configuration registers: %d\n" , ret); -return ret; + goto put_device; } hdmi->sys_regmap = regmap; mem =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); hdmi->regs =devm_ioremap_resource (dev, mem); -if (IS_ERR (hdmi->regs)) -return PTR_ERR (hdmi->regs); +if (IS_ERR (hdmi->regs)) { + ret =PTR_ERR (hdmi->regs); + goto put_device; + } remote =of_graph_get_remote_node (np,1 ,0 ); -if (!remote) -return -EINVAL ; +if (!remote) { + ret = -EINVAL ; + goto put_device; + }if (!of_device_is_compatible (remote,"hdmi-connector" )) { hdmi->next_bridge =of_drm_find_bridge (remote);if (!hdmi->next_bridge) {dev_err (dev,"Waiting for external bridge\n" );of_node_put (remote); -return -EPROBE_DEFER ; + ret = -EPROBE_DEFER ; + goto put_device; } }
@@ -1503,7 +1508,8 @@ static int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi *hdmi,dev_err (dev,"Failed to find ddc-i2c-bus node in %pOF\n" , remote);of_node_put (remote); -return -EINVAL ; + ret = -EINVAL ; + goto put_device; }of_node_put (remote);
@@ -1511,10 +1517,14 @@ static int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi *hdmi,of_node_put (i2c_np);if (!hdmi->ddc_adpt) {dev_err (dev,"Failed to get ddc i2c adapter by node\n" ); -return -EINVAL ; + ret = -EINVAL ; + goto put_device; }return 0 ; +put_device: +put_device (hdmi->cec_dev); +return ret; }/*
drivers/hv/channel_mgmt.c +5 -2
@@ -774,7 +774,7 @@ static void vmbus_wait_for_unload(void)void *page_addr;struct hv_message *msg;struct vmbus_channel_message_header *hdr; -u32 message_type; +u32 message_type, i;/* * CHANNELMSG_UNLOAD_RESPONSE is always delivered to the CPU which was
@@ -784,8 +784,11 @@ static void vmbus_wait_for_unload(void)* functional and vmbus_unload_response() will complete * vmbus_connection.unload_event. If not, the last thing we can do is * read message pages for all CPUs directly. +* +* Wait no more than 10 seconds so that the panic path can't get +* hung forever in case the response message isn't seen. */ -while (1 ) { +for (i =0 ; i <1000 ; i++) {if (completion_done (&vmbus_connection.unload_event))break ;
drivers/i2c/algos/i2c-algo-pca.c +23 -12
@@ -50,8 +50,22 @@ static void pca_reset(struct i2c_algo_pca_data *adap)pca_outw (adap,I2C_PCA_INDPTR ,I2C_PCA_IPRESET );pca_outw (adap,I2C_PCA_IND ,0xA5 );pca_outw (adap,I2C_PCA_IND ,0x5A ); + +/* +* After a reset we need to re-apply any configuration +* (calculated in pca_init) to get the bus in a working state. +*/ +pca_outw (adap,I2C_PCA_INDPTR ,I2C_PCA_IMODE ); +pca_outw (adap,I2C_PCA_IND , adap->bus_settings.mode); +pca_outw (adap,I2C_PCA_INDPTR ,I2C_PCA_ISCLL ); +pca_outw (adap,I2C_PCA_IND , adap->bus_settings.tlow); +pca_outw (adap,I2C_PCA_INDPTR ,I2C_PCA_ISCLH ); +pca_outw (adap,I2C_PCA_IND , adap->bus_settings.thi); + +pca_set_con (adap,I2C_PCA_CON_ENSIO ); }else { adap->reset_chip (adap->data); +pca_set_con (adap,I2C_PCA_CON_ENSIO | adap->bus_settings.clock_freq); } }
@@ -435,13 +449,14 @@ static int pca_init(struct i2c_adapter *adap) " Use the nominal frequency.\n", adap->name); } -pca_reset (pca_data); - clock =pca_clock (pca_data);printk (KERN_INFO "%s: Clock frequency is %dkHz\n" , adap->name, freqs[clock]); -pca_set_con (pca_data,I2C_PCA_CON_ENSIO | clock); +/* Store settings as these will be needed when the PCA chip is reset */ + pca_data->bus_settings.clock_freq = clock; + +pca_reset (pca_data); }else {int clock;int mode;
@@ -508,19 +523,15 @@ static int pca_init(struct i2c_adapter *adap) thi = tlow * min_thi / min_tlow; } +/* Store settings as these will be needed when the PCA chip is reset */ + pca_data->bus_settings.mode = mode; + pca_data->bus_settings.tlow = tlow; + pca_data->bus_settings.thi = thi; +pca_reset (pca_data);printk (KERN_INFO "%s: Clock frequency is %dHz\n" , adap->name, clock *100 ); - -pca_outw (pca_data,I2C_PCA_INDPTR ,I2C_PCA_IMODE ); -pca_outw (pca_data,I2C_PCA_IND , mode); -pca_outw (pca_data,I2C_PCA_INDPTR ,I2C_PCA_ISCLL ); -pca_outw (pca_data,I2C_PCA_IND , tlow); -pca_outw (pca_data,I2C_PCA_INDPTR ,I2C_PCA_ISCLH ); -pca_outw (pca_data,I2C_PCA_IND , thi); - -pca_set_con (pca_data,I2C_PCA_CON_ENSIO ); }udelay (500 );/* 500 us for oscillator to stabilise */
drivers/i2c/busses/i2c-i801.c +14 -7
@@ -1499,6 +1499,16 @@ static inline int i801_acpi_probe(struct i801_priv *priv) { return 0; }static inline void i801_acpi_remove (struct i801_priv *priv) { }#endif +static unsigned char i801_setup_hstcfg (struct i801_priv *priv) +{ +unsigned char hstcfg = priv->original_hstcfg; + + hstcfg &= ~SMBHSTCFG_I2C_EN ;/* SMBus timing */ + hstcfg |=SMBHSTCFG_HST_EN ; +pci_write_config_byte (priv->pci_dev,SMBHSTCFG , hstcfg); +return hstcfg; +} +static int i801_probe (struct pci_dev *dev,const struct pci_device_id *id) {unsigned char temp;
@@ -1602,14 +1612,10 @@ static int i801_probe(struct pci_dev *dev, const struct pci_device_id *id)return err; } -pci_read_config_byte (priv->pci_dev,SMBHSTCFG , &temp); - priv->original_hstcfg = temp; - temp &= ~SMBHSTCFG_I2C_EN ;/* SMBus timing */ -if (!(temp &SMBHSTCFG_HST_EN )) { +pci_read_config_byte (priv->pci_dev,SMBHSTCFG , &priv->original_hstcfg); + temp =i801_setup_hstcfg (priv); +if (!(priv->original_hstcfg &SMBHSTCFG_HST_EN ))dev_info (&dev->dev,"Enabling SMBus device\n" ); - temp |=SMBHSTCFG_HST_EN ; - } -pci_write_config_byte (priv->pci_dev,SMBHSTCFG , temp);if (temp &SMBHSTCFG_SMB_SMI_EN ) {dev_dbg (&dev->dev,"SMBus using interrupt SMI#\n" );
@@ -1736,6 +1742,7 @@ static int i801_resume(struct device *dev)struct pci_dev *pci_dev =to_pci_dev (dev);struct i801_priv *priv =pci_get_drvdata (pci_dev); +i801_setup_hstcfg (priv);i801_enable_host_notify (&priv->adapter);return 0 ;
drivers/iio/accel/bmc150-accel-core.c +12 -3
@@ -197,6 +197,14 @@ struct bmc150_accel_data {struct mutex mutex;u8 fifo_mode, watermark;s16 buffer[8 ]; +/* +* Ensure there is sufficient space and correct alignment for +* the timestamp if enabled +*/ +struct { +__le16 channels[3 ]; +s64 ts__aligned(8) ; + } scan;u8 bw_bits;u32 slope_dur;u32 slope_thres;
@@ -933,15 +941,16 @@ static int __bmc150_accel_fifo_flush(struct iio_dev *indio_dev,* now. */ for (i =0 ; i < count; i++) { -u16 sample[8 ];int j, bit; j =0 ;for_each_set_bit (bit, indio_dev->active_scan_mask, indio_dev->masklength) -memcpy (&sample[j++], &buffer[i *3 + bit],2 ); +memcpy (&data->scan.channels[j++], &buffer[i *3 + bit], +sizeof (data->scan.channels[0 ])); -iio_push_to_buffers_with_timestamp (indio_dev, sample, tstamp); +iio_push_to_buffers_with_timestamp (indio_dev, &data->scan, + tstamp); tstamp += sample_period; }
drivers/iio/accel/kxsd9.c +11 -5
@@ -212,14 +212,20 @@ static irqreturn_t kxsd9_trigger_handler(int irq, void *p)const struct iio_poll_func *pf = p;struct iio_dev *indio_dev = pf->indio_dev;struct kxsd9_state *st =iio_priv (indio_dev); +/* +* Ensure correct positioning and alignment of timestamp. +* No need to zero initialize as all elements written. +*/ +struct { +__be16 chan[4 ]; +s64 ts__aligned(8) ; + } hw_values;int ret; -/* 4 * 16bit values AND timestamp */ -__be16 hw_values[8 ]; ret =regmap_bulk_read (st->map,KXSD9_REG_X , - &hw_values, -8 ); + hw_values.chan, +sizeof (hw_values.chan));if (ret) {dev_err (st->dev,"error reading data\n" );
@@ -227,7 +233,7 @@ static irqreturn_t kxsd9_trigger_handler(int irq, void *p) }iio_push_to_buffers_with_timestamp (indio_dev, - hw_values, + &hw_values,iio_get_time_ns (indio_dev));iio_trigger_notify_done (indio_dev->trig);
drivers/iio/accel/mma7455_core.c +12 -4
@@ -55,6 +55,14 @@struct mma7455_data {struct regmap *regmap; +/* +* Used to reorganize data. Will ensure correct alignment of +* the timestamp if present +*/ +struct { +__le16 channels[3 ]; +s64 ts__aligned(8) ; + } scan; };static int mma7455_drdy (struct mma7455_data *mma7455)
@@ -85,19 +93,19 @@ static irqreturn_t mma7455_trigger_handler(int irq, void *p)struct iio_poll_func *pf = p;struct iio_dev *indio_dev = pf->indio_dev;struct mma7455_data *mma7455 =iio_priv (indio_dev); -u8 buf[16 ];/* 3 x 16-bit channels + padding + ts */ int ret; ret =mma7455_drdy (mma7455);if (ret) goto done; - ret =regmap_bulk_read (mma7455->regmap,MMA7455_REG_XOUTL , buf, -sizeof (__le16) *3 ); + ret =regmap_bulk_read (mma7455->regmap,MMA7455_REG_XOUTL , + mma7455->scan.channels, +sizeof (mma7455->scan.channels));if (ret) goto done; -iio_push_to_buffers_with_timestamp (indio_dev, buf, +iio_push_to_buffers_with_timestamp (indio_dev, &mma7455->scan,iio_get_time_ns (indio_dev)); done:
drivers/iio/accel/mma8452.c +8 -3
@@ -105,6 +105,12 @@ struct mma8452_data {u8 ctrl_reg1;u8 data_cfg;const struct mma_chip_info *chip_info; + +/* Ensure correct alignment of time stamp when present */ +struct { +__be16 channels[3 ]; +s64 ts__aligned(8) ; + } buffer; };/**
@@ -1003,14 +1009,13 @@ static irqreturn_t mma8452_trigger_handler(int irq, void *p)struct iio_poll_func *pf = p;struct iio_dev *indio_dev = pf->indio_dev;struct mma8452_data *data =iio_priv (indio_dev); -u8 buffer[16 ];/* 3 16-bit channels + padding + ts */ int ret; - ret =mma8452_read (data, (__be16 *)buffer); + ret =mma8452_read (data, data->buffer.channels);if (ret <0 ) goto done; -iio_push_to_buffers_with_timestamp (indio_dev, buffer, +iio_push_to_buffers_with_timestamp (indio_dev, &data->buffer,iio_get_time_ns (indio_dev)); done:
drivers/iio/adc/ina2xx-adc.c +7 -4
@@ -133,6 +133,11 @@ struct ina2xx_chip_info {int int_time_vbus;/* Bus voltage integration time uS */ int int_time_vshunt;/* Shunt voltage integration time uS */ bool allow_async_readout; +/* data buffer needs space for channel data and timestamp */ +struct { +u16 chan[4 ]; +u64 ts__aligned(8) ; + } scan; };static const struct ina2xx_config ina2xx_config[] = {
@@ -598,7 +603,6 @@ static const struct iio_chan_spec ina219_channels[] = {static int ina2xx_work_buffer (struct iio_dev *indio_dev) {struct ina2xx_chip_info *chip =iio_priv (indio_dev); -unsigned short data[8 ];int bit, ret, i =0 ;s64 time_a, time_b;unsigned int alert;
@@ -648,7 +652,7 @@ static int ina2xx_work_buffer(struct iio_dev *indio_dev)if (ret <0 )return ret; - data[i++] = val; + chip->scan.chan[i++] = val;if (INA2XX_SHUNT_VOLTAGE + bit ==INA2XX_POWER ) cnvr_need_clear =0 ;
@@ -665,8 +669,7 @@ static int ina2xx_work_buffer(struct iio_dev *indio_dev) time_b =iio_get_time_ns (indio_dev); -iio_push_to_buffers_with_timestamp (indio_dev, - (unsigned int *)data, time_a); +iio_push_to_buffers_with_timestamp (indio_dev, &chip->scan, time_a);return (unsigned long )(time_b - time_a) /1000 ; };
drivers/iio/adc/max1118.c +7 -3
@@ -38,6 +38,11 @@ struct max1118 {struct spi_device *spi;struct mutex lock;struct regulator *reg; +/* Ensure natural alignment of buffer elements */ +struct { +u8 channels[2 ]; +s64 ts__aligned(8) ; + } scan;u8 data____cacheline_aligned ; };
@@ -163,7 +168,6 @@ static irqreturn_t max1118_trigger_handler(int irq, void *p)struct iio_poll_func *pf = p;struct iio_dev *indio_dev = pf->indio_dev;struct max1118 *adc =iio_priv (indio_dev); -u8 data[16 ] = { };/* 2x 8-bit ADC data + padding + 8 bytes timestamp */ int scan_index;int i =0 ;
@@ -181,10 +185,10 @@ static irqreturn_t max1118_trigger_handler(int irq, void *p) goto out; } - data[i] = ret; + adc->scan.channels[i] = ret; i++; } -iio_push_to_buffers_with_timestamp (indio_dev, data, +iio_push_to_buffers_with_timestamp (indio_dev, &adc->scan,iio_get_time_ns (indio_dev)); out:mutex_unlock (&adc->lock);
drivers/iio/adc/mcp3422.c +10 -6
@@ -99,16 +99,12 @@ static int mcp3422_update_config(struct mcp3422 *adc, u8 newconfig) {int ret; -mutex_lock (&adc->lock); - ret =i2c_master_send (adc->i2c, &newconfig,1 );if (ret >0 ) { adc->config = newconfig; ret =0 ; } -mutex_unlock (&adc->lock); -return ret; }
@@ -141,6 +137,8 @@ static int mcp3422_read_channel(struct mcp3422 *adc,u8 config;u8 req_channel = channel->channel; +mutex_lock (&adc->lock); +if (req_channel !=MCP3422_CHANNEL (adc->config)) { config = adc->config; config &= ~MCP3422_CHANNEL_MASK ;
@@ -148,12 +146,18 @@ static int mcp3422_read_channel(struct mcp3422 *adc, config &= ~MCP3422_PGA_MASK ; config |=MCP3422_PGA_VALUE (adc->pga[req_channel]); ret =mcp3422_update_config (adc, config); -if (ret <0 ) +if (ret <0 ) { +mutex_unlock (&adc->lock);return ret; + }msleep (mcp3422_read_times[MCP3422_SAMPLE_RATE (adc->config)]); } -return mcp3422_read (adc, value, &config); + ret =mcp3422_read (adc, value, &config); + +mutex_unlock (&adc->lock); + +return ret; } static int mcp3422_read_raw(struct iio_dev *iio,
drivers/iio/adc/ti-adc081c.c +8 -3
@@ -36,6 +36,12 @@ struct adc081c {/* 8, 10 or 12 */ int bits; + +/* Ensure natural alignment of buffer elements */ +struct { +u16 channel; +s64 ts__aligned(8) ; + } scan; };#define REG_CONV_RES 0x00
@@ -132,14 +138,13 @@ static irqreturn_t adc081c_trigger_handler(int irq, void *p)struct iio_poll_func *pf = p;struct iio_dev *indio_dev = pf->indio_dev;struct adc081c *data =iio_priv (indio_dev); -u16 buf[8 ];/* 2 bytes data + 6 bytes padding + 8 bytes timestamp */ int ret; ret =i2c_smbus_read_word_swapped (data->i2c,REG_CONV_RES );if (ret <0 ) goto out; - buf[0 ] = ret; -iio_push_to_buffers_with_timestamp (indio_dev, buf, + data->scan.channel = ret; +iio_push_to_buffers_with_timestamp (indio_dev, &data->scan,iio_get_time_ns (indio_dev)); out:iio_trigger_notify_done (indio_dev->trig);
drivers/iio/adc/ti-adc084s021.c +7 -3
@@ -28,6 +28,11 @@ struct adc084s021 {struct spi_transfer spi_trans;struct regulator *reg;struct mutex lock; +/* Buffer used to align data */ +struct { +__be16 channels[4 ]; +s64 ts__aligned(8) ; + } scan;/* * DMA (thus cache coherency maintenance) requires the * transfer buffers to live in their own cache line.
@@ -143,14 +148,13 @@ static irqreturn_t adc084s021_buffer_trigger_handler(int irq, void *pollfunc)struct iio_poll_func *pf = pollfunc;struct iio_dev *indio_dev = pf->indio_dev;struct adc084s021 *adc =iio_priv (indio_dev); -__be16 data[8 ] = {0 };/* 4 * 16-bit words of data + 8 bytes timestamp */ mutex_lock (&adc->lock); -if (adc084s021_adc_conversion (adc, &data) <0 ) +if (adc084s021_adc_conversion (adc, adc->scan.channels) <0 )dev_err (&adc->spi->dev,"Failed to read data\n" ); -iio_push_to_buffers_with_timestamp (indio_dev, data, +iio_push_to_buffers_with_timestamp (indio_dev, &adc->scan,iio_get_time_ns (indio_dev));mutex_unlock (&adc->lock);iio_trigger_notify_done (indio_dev->trig);
drivers/iio/adc/ti-ads1015.c +10 -0
@@ -312,6 +312,7 @@ static const struct iio_chan_spec ads1115_channels[] = { IIO_CHAN_SOFT_TIMESTAMP(ADS1015_TIMESTAMP), }; +#ifdef CONFIG_PM static int ads1015_set_power_state (struct ads1015_data *data,bool on) {int ret;
@@ -329,6 +330,15 @@ static int ads1015_set_power_state(struct ads1015_data *data, bool on) return ret < 0 ? ret : 0; } +#else /* !CONFIG_PM */ + +static int ads1015_set_power_state (struct ads1015_data *data,bool on) +{ +return 0 ; +} + +#endif /* !CONFIG_PM */ +static int ads1015_get_adc_result (struct ads1015_data *data,int chan,int *val) {
drivers/iio/chemical/ccs811.c +9 -4
@@ -73,6 +73,11 @@ struct ccs811_data {struct i2c_client *client;struct mutex lock;/* Protect readings */ struct ccs811_reading buffer; +/* Ensures correct alignment of timestamp if present */ +struct { +s16 channels[2 ]; +s64 ts__aligned(8) ; + } scan; };static const struct iio_chan_spec ccs811_channels[] = {
@@ -275,17 +280,17 @@ static irqreturn_t ccs811_trigger_handler(int irq, void *p)struct iio_dev *indio_dev = pf->indio_dev;struct ccs811_data *data =iio_priv (indio_dev);struct i2c_client *client = data->client; -s16 buf[8 ];/* s16 eCO2 + s16 TVOC + padding + 8 byte timestamp */ int ret; - ret =i2c_smbus_read_i2c_block_data (client,CCS811_ALG_RESULT_DATA ,4 , - (u8 *)&buf); + ret =i2c_smbus_read_i2c_block_data (client,CCS811_ALG_RESULT_DATA , +sizeof (data->scan.channels), + (u8 *)data->scan.channels);if (ret !=4 ) {dev_err (&client->dev,"cannot read sensor data\n" ); goto err; } -iio_push_to_buffers_with_timestamp (indio_dev, buf, +iio_push_to_buffers_with_timestamp (indio_dev, &data->scan,iio_get_time_ns (indio_dev)); err:
drivers/iio/light/ltr501.c +9 -6
@@ -1249,13 +1249,16 @@ static irqreturn_t ltr501_trigger_handler(int irq, void *p)struct iio_poll_func *pf = p;struct iio_dev *indio_dev = pf->indio_dev;struct ltr501_data *data =iio_priv (indio_dev); -u16 buf[8 ]; +struct { +u16 channels[3 ]; +s64 ts__aligned(8) ; + } scan;__le16 als_buf[2 ];u8 mask =0 ;int j =0 ;int ret, psdata; -memset (buf,0 ,sizeof (buf)); +memset (&scan,0 ,sizeof (scan));/* figure out which data needs to be ready */ if (test_bit(0, indio_dev->active_scan_mask) ||
@@ -1274,9 +1277,9 @@ static irqreturn_t ltr501_trigger_handler(int irq, void *p)if (ret <0 )return ret;if (test_bit (0 , indio_dev->active_scan_mask)) - buf[j++] =le16_to_cpu (als_buf[1 ]); + scan.channels[j++] =le16_to_cpu (als_buf[1 ]);if (test_bit (1 , indio_dev->active_scan_mask)) - buf[j++] =le16_to_cpu (als_buf[0 ]); + scan.channels[j++] =le16_to_cpu (als_buf[0 ]); }if (mask <R501_STATUS_PS_RDY ) {
@@ -1284,10 +1287,10 @@ static irqreturn_t ltr501_trigger_handler(int irq, void *p) &psdata, 2);if (ret <0 ) goto done; - buf[j++] = psdata <R501_PS_DATA_MASK ; + scan.channels[j++] = psdata <R501_PS_DATA_MASK ; } -iio_push_to_buffers_with_timestamp (indio_dev, buf, +iio_push_to_buffers_with_timestamp (indio_dev, &scan,iio_get_time_ns (indio_dev)); done:
drivers/iio/light/max44000.c +8 -4
@@ -78,6 +78,11 @@struct max44000_data {struct mutex lock;struct regmap *regmap; +/* Ensure naturally aligned timestamp */ +struct { +u16 channels[2 ]; +s64 ts__aligned(8) ; + } scan; };/* Default scale is set to the minimum of 0.03125 or 1 / (1 << 5) lux */
@@ -492,7 +497,6 @@ static irqreturn_t max44000_trigger_handler(int irq, void *p)struct iio_poll_func *pf = p;struct iio_dev *indio_dev = pf->indio_dev;struct max44000_data *data =iio_priv (indio_dev); -u16 buf[8 ];/* 2x u16 + padding + 8 bytes timestamp */ int index =0 ;unsigned int regval;int ret;
@@ -502,17 +506,17 @@ static irqreturn_t max44000_trigger_handler(int irq, void *p) ret =max44000_read_alsval (data);if (ret <0 ) goto out_unlock; - buf[index++] = ret; + data->scan.channels[index++] = ret; }if (test_bit (MAX44000_SCAN_INDEX_PRX , indio_dev->active_scan_mask)) { ret =regmap_read (data->regmap,MAX44000_REG_PRX_DATA , ®val);if (ret <0 ) goto out_unlock; - buf[index] = regval; + data->scan.channels[index] = regval; }mutex_unlock (&data->lock); -iio_push_to_buffers_with_timestamp (indio_dev, buf, +iio_push_to_buffers_with_timestamp (indio_dev, &data->scan,iio_get_time_ns (indio_dev));iio_trigger_notify_done (indio_dev->trig);return IRQ_HANDLED ;
drivers/iio/magnetometer/ak8975.c +11 -5
@@ -381,6 +381,12 @@ struct ak8975_data {struct iio_mount_matrix orientation;struct regulator *vdd;struct regulator *vid; + +/* Ensure natural alignment of timestamp */ +struct { +s16 channels[3 ]; +s64 ts__aligned(8) ; + } scan; };/* Enable attached power regulator if any. */
@@ -815,7 +821,6 @@ static void ak8975_fill_buffer(struct iio_dev *indio_dev)const struct i2c_client *client = data->client;const struct ak_def *def = data->def;int ret; -s16 buff[8 ];/* 3 x 16 bits axis values + 1 aligned 64 bits timestamp */ __le16 fval[3 ];mutex_lock (&data->lock);
@@ -838,12 +843,13 @@ static void ak8975_fill_buffer(struct iio_dev *indio_dev)mutex_unlock (&data->lock);/* Clamp to valid range. */ - buff[0 ] =clamp_t (s16,le16_to_cpu (fval[0 ]), -def->range, def->range); - buff[1 ] =clamp_t (s16,le16_to_cpu (fval[1 ]), -def->range, def->range); - buff[2 ] =clamp_t (s16,le16_to_cpu (fval[2 ]), -def->range, def->range); + data->scan.channels[0 ] =clamp_t (s16,le16_to_cpu (fval[0 ]), -def->range, def->range); + data->scan.channels[1 ] =clamp_t (s16,le16_to_cpu (fval[1 ]), -def->range, def->range); + data->scan.channels[2 ] =clamp_t (s16,le16_to_cpu (fval[2 ]), -def->range, def->range); -iio_push_to_buffers_with_timestamp (indio_dev, buff, +iio_push_to_buffers_with_timestamp (indio_dev, &data->scan,iio_get_time_ns (indio_dev)); +return ; unlock:
drivers/infiniband/core/verbs.c +1 -1
@@ -1343,7 +1343,7 @@ int ib_get_eth_speed(struct ib_device *dev, u8 port_num, u8 *speed, u8 *width)dev_put (netdev); -if (!rc) { +if (!rc && lksettings.base.speed != (u32 )SPEED_UNKNOWN ) { netdev_speed = lksettings.base.speed; }else { netdev_speed =SPEED_1000 ;
drivers/infiniband/sw/rxe/rxe.c +0 -3
@@ -170,9 +170,6 @@ static int rxe_init_ports(struct rxe_dev *rxe)rxe_init_port_param (port); -if (!port->attr.pkey_tbl_len || !port->attr.gid_tbl_len) -return -EINVAL ; - port->pkey_tbl =kcalloc (port->attr.pkey_tbl_len,sizeof (*port->pkey_tbl),GFP_KERNEL );
drivers/infiniband/sw/rxe/rxe_mr.c +1 -0
@@ -203,6 +203,7 @@ int rxe_mem_init_user(struct rxe_dev *rxe, struct rxe_pd *pd, u64 start, vaddr =page_address (sg_page (sg));if (!vaddr) {pr_warn ("null vaddr\n" ); +ib_umem_release (umem); err = -ENOMEM ; goto err1; }
drivers/infiniband/sw/rxe/rxe_verbs.c +1 -1
@@ -1178,7 +1178,7 @@ static ssize_t parent_show(struct device *device, struct rxe_dev *rxe = container_of(device, struct rxe_dev, ib_dev.dev); -return snprintf (buf,16 ,"%s\n" ,rxe_parent_name (rxe,1 )); +return scnprintf (buf,PAGE_SIZE ,"%s\n" ,rxe_parent_name (rxe,1 )); }static DEVICE_ATTR_RO (parent);
drivers/input/mouse/trackpoint.c +6 -4
@@ -20,10 +20,12 @@#include "trackpoint.h" static const char *const trackpoint_variants[] = { - [TP_VARIANT_IBM ] ="IBM" , - [TP_VARIANT_ALPS ] ="ALPS" , - [TP_VARIANT_ELAN ] ="Elan" , - [TP_VARIANT_NXP ] ="NXP" , + [TP_VARIANT_IBM ] ="IBM" , + [TP_VARIANT_ALPS ] ="ALPS" , + [TP_VARIANT_ELAN ] ="Elan" , + [TP_VARIANT_NXP ] ="NXP" , + [TP_VARIANT_JYT_SYNAPTICS ] ="JYT_Synaptics" , + [TP_VARIANT_SYNAPTICS ] ="Synaptics" , };/*
drivers/input/mouse/trackpoint.h +6 -4
@@ -27,10 +27,12 @@* 0x01 was the original IBM trackpoint, others implement very limited * subset of trackpoint features. */ -#define TP_VARIANT_IBM 0x01 -#define TP_VARIANT_ALPS 0x02 -#define TP_VARIANT_ELAN 0x03 -#define TP_VARIANT_NXP 0x04 +#define TP_VARIANT_IBM 0x01 +#define TP_VARIANT_ALPS 0x02 +#define TP_VARIANT_ELAN 0x03 +#define TP_VARIANT_NXP 0x04 +#define TP_VARIANT_JYT_SYNAPTICS 0x05 +#define TP_VARIANT_SYNAPTICS 0x06/* * Commands
drivers/input/serio/i8042-x86ia64io.h +16 -0
@@ -552,6 +552,14 @@ static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5738"), }, }, + { + /* Entroware Proteus */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Entroware"), + DMI_MATCH(DMI_PRODUCT_NAME, "Proteus"), + DMI_MATCH(DMI_PRODUCT_VERSION, "EL07R4"), + }, + }, { } };
@@ -680,6 +688,14 @@ static const struct dmi_system_id __initconst i8042_dmi_reset_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "33474HU"), }, }, + { + /* Entroware Proteus */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Entroware"), + DMI_MATCH(DMI_PRODUCT_NAME, "Proteus"), + DMI_MATCH(DMI_PRODUCT_VERSION, "EL07R4"), + }, + }, { } };
drivers/mmc/host/sdhci-msm.c +17 -1
@@ -837,7 +837,7 @@ static void sdhci_msm_set_cdr(struct sdhci_host *host, bool enable)static int sdhci_msm_execute_tuning (struct mmc_host *mmc,u32 opcode) {struct sdhci_host *host =mmc_priv (mmc); -int tuning_seq_cnt =3 ; +int tuning_seq_cnt =10 ;u8 phase, tuned_phases[16 ], tuned_phase_cnt =0 ;int rc;struct mmc_ios ios = host->mmc->ios;
@@ -901,6 +901,22 @@ static int sdhci_msm_execute_tuning(struct mmc_host *mmc, u32 opcode) }while (++phase <ARRAY_SIZE (tuned_phases));if (tuned_phase_cnt) { +if (tuned_phase_cnt ==ARRAY_SIZE (tuned_phases)) { +/* +* All phases valid is _almost_ as bad as no phases +* valid. Probably all phases are not really reliable +* but we didn't detect where the unreliable place is. +* That means we'll essentially be guessing and hoping +* we get a good phase. Better to try a few times. +*/ +dev_dbg (mmc_dev (mmc),"%s: All phases valid; try again\n" , +mmc_hostname (mmc)); +if (--tuning_seq_cnt) { + tuned_phase_cnt =0 ; + goto retry; + } + } + rc =msm_find_most_appropriate_phase (host, tuned_phases, tuned_phase_cnt);if (rc <0 )
drivers/net/hyperv/netvsc_drv.c +1 -1
@@ -365,7 +365,7 @@ static u16 netvsc_select_queue(struct net_device *ndev, struct sk_buff *skb, }rcu_read_unlock (); -while (unlikely (txq >= ndev->real_num_tx_queues)) +while (txq >= ndev->real_num_tx_queues) txq -= ndev->real_num_tx_queues;return txq;
drivers/net/wan/hdlc_cisco.c +1 -0
@@ -377,6 +377,7 @@ static int cisco_ioctl(struct net_device *dev, struct ifreq *ifr)memcpy (&state (hdlc)->settings, &new_settings, size);spin_lock_init (&state (hdlc)->lock); dev->header_ops = &cisco_header_ops; + dev->hard_header_len =sizeof (struct hdlc_header ); dev->type =ARPHRD_CISCO ;call_netdevice_notifiers (NETDEV_POST_TYPE_CHANGE , dev);netif_dormant_on (dev);
drivers/net/wan/lapbether.c +3 -0
@@ -213,6 +213,8 @@ static void lapbeth_data_transmit(struct net_device *ndev, struct sk_buff *skb) skb->dev = dev = lapbeth->ethdev; +skb_reset_network_header (skb); +dev_hard_header (skb, dev,ETH_P_DEC , bcast_addr,NULL ,0 );dev_queue_xmit (skb);
@@ -343,6 +345,7 @@ static int lapbeth_new_device(struct net_device *dev)*/ ndev->needed_headroom =-1 +3 +2 + dev->hard_header_len + dev->needed_headroom; + ndev->needed_tailroom = dev->needed_tailroom; lapbeth =netdev_priv (ndev); lapbeth->axdev = ndev;
drivers/nfc/st95hf/core.c +1 -1
@@ -981,7 +981,7 @@ static int st95hf_in_send_cmd(struct nfc_digital_dev *ddev, rc =down_killable (&stcontext->exchange_lock);if (rc) {WARN (1 ,"Semaphore is not found up in st95hf_in_send_cmd\n" ); -return rc; + goto free_skb_resp; } rc = st95hf_spi_send(&stcontext->spicontext, skb->data,
drivers/nvme/host/fc.c +1 -0
@@ -1566,6 +1566,7 @@ nvme_fc_term_aen_ops(struct nvme_fc_ctrl *ctrl)struct nvme_fc_fcp_op *aen_op;int i; +cancel_work_sync (&ctrl->ctrl.async_event_work); aen_op = ctrl->aen_ops;for (i =0 ; i <NVME_FC_NR_AEN_COMMANDS ; i++, aen_op++) {if (!aen_op->fcp_req.private)
drivers/rapidio/Kconfig +1 -1
@@ -25,7 +25,7 @@ config RAPIDIO_ENABLE_RX_TX_PORTS config RAPIDIO_DMA_ENGINE bool "DMA Engine support for RapidIO" depends on RAPIDIO - select DMADEVICES + depends on DMADEVICES select DMA_ENGINE help Say Y here if you want to use DMA Engine frameork for RapidIO data
drivers/regulator/core.c +26 -20
84 lines not on this page · raw message
drivers/scsi/libfc/fc_disc.c +0 -2
@@ -658,8 +658,6 @@ static void fc_disc_gpn_id_resp(struct fc_seq *sp, struct fc_frame *fp,fc_frame_free (fp); out:kref_put (&rdata->kref, fc_rport_destroy); -if (!IS_ERR (fp)) -fc_frame_free (fp); }/**
drivers/scsi/libsas/sas_ata.c +4 -1
@@ -227,7 +227,10 @@ static unsigned int sas_ata_qc_issue(struct ata_queued_cmd *qc) task->num_scatter = si; } - task->data_dir = qc->dma_dir; +if (qc->tf.protocol ==ATA_PROT_NODATA ) + task->data_dir =DMA_NONE ; +else + task->data_dir = qc->dma_dir; task->scatter = qc->sg; task->ata_task.retry_count =1 ; task->task_state_flags =SAS_TASK_STATE_PENDING ;
drivers/scsi/lpfc/lpfc_els.c +3 -1
@@ -4104,7 +4104,9 @@ lpfc_cmpl_els_rsp(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, out:if (ndlp &&NLP_CHK_NODE_ACT (ndlp) && shost) {spin_lock_irq (shost->host_lock); - ndlp->nlp_flag &= ~(NLP_ACC_REGLOGIN |NLP_RM_DFLT_RPI ); +if (mbox) + ndlp->nlp_flag &= ~NLP_ACC_REGLOGIN ; + ndlp->nlp_flag &= ~NLP_RM_DFLT_RPI ;spin_unlock_irq (shost->host_lock);/* If the node is not being used by another discovery thread,
drivers/scsi/pm8001/pm8001_sas.c +1 -1
@@ -795,7 +795,7 @@ pm8001_exec_internal_task_abort(struct pm8001_hba_info *pm8001_ha, res =pm8001_tag_alloc (pm8001_ha, &ccb_tag);if (res) -return res; + goto ex_err; ccb = &pm8001_ha->ccb_info[ccb_tag]; ccb->device = pm8001_dev; ccb->ccb_tag = ccb_tag;
drivers/spi/spi-loopback-test.c +1 -1
@@ -99,7 +99,7 @@ static struct spi_test spi_tests[] = { { .description = "tx/rx-transfer - crossing PAGE_SIZE", .fill_option = FILL_COUNT_8, - .iterate_len = { ITERATE_MAX_LEN }, + .iterate_len = { ITERATE_LEN }, .iterate_tx_align = ITERATE_ALIGN, .iterate_rx_align = ITERATE_ALIGN, .transfer_count = 1,
drivers/spi/spi.c +7 -2
@@ -1125,8 +1125,6 @@ static int spi_transfer_one_message(struct spi_controller *ctlr,if (msg->status && ctlr->handle_err) ctlr->handle_err (ctlr, msg); -spi_res_release (ctlr, msg); -spi_finalize_current_message (ctlr);return ret;
@@ -1384,6 +1382,13 @@ void spi_finalize_current_message(struct spi_controller *ctlr)spi_unmap_msg (ctlr, mesg); +/* In the prepare_messages callback the spi bus has the opportunity to +* split a transfer to smaller chunks. +* Release splited transfers here since spi_map_msg is done on the +* splited transfers. +*/ +spi_res_release (ctlr, mesg); +if (ctlr->cur_msg_prepared && ctlr->unprepare_message) { ret = ctlr->unprepare_message (ctlr, mesg);if (ret) {
drivers/staging/greybus/audio_topology.c +15 -14
@@ -461,6 +461,15 @@ static int gbcodec_mixer_dapm_ctl_put(struct snd_kcontrol *kcontrol, val = ucontrol->value.integer.value[0 ] & mask; connect = !!val; + ret =gb_pm_runtime_get_sync (bundle); +if (ret) +return ret; + + ret =gb_audio_gb_get_control (module->mgmt_connection, data->ctl_id, +GB_AUDIO_INVALID_INDEX , &gbvalue); +if (ret) + goto exit; +/* update ucontrol */ if (gbvalue.value.integer_value[0 ] != val) {for (wi =0 ; wi < wlist->num_widgets; wi++) {
@@ -474,25 +483,17 @@ static int gbcodec_mixer_dapm_ctl_put(struct snd_kcontrol *kcontrol, gbvalue.value.integer_value[0 ] =cpu_to_le32 (ucontrol->value.integer.value[0 ]); - ret =gb_pm_runtime_get_sync (bundle); -if (ret) -return ret; - ret =gb_audio_gb_set_control (module->mgmt_connection, data->ctl_id,GB_AUDIO_INVALID_INDEX , &gbvalue); - -gb_pm_runtime_put_autosuspend (bundle); - -if (ret) { -dev_err_ratelimited (codec->dev, -"%d:Error in %s for %s\n" , ret, - __func__, kcontrol->id.name); -return ret; - } } -return 0 ; +exit: +gb_pm_runtime_put_autosuspend (bundle); +if (ret) +dev_err_ratelimited (codec_dev,"%d:Error in %s for %s\n" , ret, + __func__, kcontrol->id.name); +return ret; }#define SOC_DAPM_MIXER_GB (xname, kcount, data) \
drivers/staging/wlan-ng/hfa384x_usb.c +0 -5
@@ -531,13 +531,8 @@ static void hfa384x_usb_defer(struct work_struct *data)*/ void hfa384x_create (struct hfa384x *hw,struct usb_device *usb) { -memset (hw,0 ,sizeof (*hw)); hw->usb = usb; -/* set up the endpoints */ - hw->endp_in =usb_rcvbulkpipe (usb,1 ); - hw->endp_out =usb_sndbulkpipe (usb,2 ); -/* Set up the waitq */ init_waitqueue_head (&hw->cmdq);
drivers/staging/wlan-ng/prism2usb.c +6 -13
@@ -61,23 +61,14 @@ static int prism2sta_probe_usb(struct usb_interface *interface, const struct usb_device_id *id) {struct usb_device *dev; -const struct usb_endpoint_descriptor *epd; -const struct usb_host_interface *iface_desc = interface->cur_altsetting; +struct usb_endpoint_descriptor *bulk_in, *bulk_out; +struct usb_host_interface *iface_desc = interface->cur_altsetting;struct wlandevice *wlandev =NULL ;struct hfa384x *hw =NULL ;int result =0 ; -if (iface_desc->desc.bNumEndpoints !=2 ) { - result = -ENODEV ; - goto failed; - } - - result = -EINVAL ; - epd = &iface_desc->endpoint[1 ].desc; -if (!usb_endpoint_is_bulk_in (epd)) - goto failed; - epd = &iface_desc->endpoint[2 ].desc; -if (!usb_endpoint_is_bulk_out (epd)) + result =usb_find_common_endpoints (iface_desc, &bulk_in, &bulk_out,NULL ,NULL ); +if (result) goto failed; dev =interface_to_usbdev (interface);
@@ -96,6 +87,8 @@ static int prism2sta_probe_usb(struct usb_interface *interface, }/* Initialize the hw data */ + hw->endp_in =usb_rcvbulkpipe (dev, bulk_in->bEndpointAddress); + hw->endp_out =usb_sndbulkpipe (dev, bulk_out->bEndpointAddress);hfa384x_create (hw, dev); hw->wlandev = wlandev;
drivers/target/iscsi/iscsi_target.c +15 -2
@@ -1382,14 +1382,27 @@ static u32 iscsit_do_crypto_hash_sg( sg = cmd->first_data_sg; page_off = cmd->first_data_sg_off; +if (data_length && page_off) { +struct scatterlist first_sg; +u32 len =min_t (u32, data_length, sg->length - page_off); + +sg_init_table (&first_sg,1 ); +sg_set_page (&first_sg,sg_page (sg), len, sg->offset + page_off); + +ahash_request_set_crypt (hash, &first_sg,NULL , len); +crypto_ahash_update (hash); + + data_length -= len; + sg =sg_next (sg); + } +while (data_length) { -u32 cur_len =min_t (u32, data_length, (sg->length - page_off)); +u32 cur_len =min_t (u32, data_length, sg->length);ahash_request_set_crypt (hash, sg,NULL , cur_len);crypto_ahash_update (hash); data_length -= cur_len; - page_off =0 ;/* iscsit_map_iovec has already checked for invalid sg pointers */ sg =sg_next (sg); }
drivers/target/iscsi/iscsi_target_login.c +3 -3
@@ -1158,7 +1158,7 @@ iscsit_conn_set_transport(struct iscsi_conn *conn, struct iscsit_transport *t) }void iscsi_target_login_sess_out (struct iscsi_conn *conn, -struct iscsi_np *np,bool zero_tsih,bool new_sess) +bool zero_tsih,bool new_sess) {if (!new_sess) goto old_sess_out;
@@ -1180,7 +1180,6 @@ void iscsi_target_login_sess_out(struct iscsi_conn *conn, conn->sess =NULL ; old_sess_out: -iscsi_stop_login_thread_timer (np);/* * If login negotiation fails check if the Time2Retain timer * needs to be restarted.
@@ -1440,8 +1439,9 @@ static int __iscsi_target_login_thread(struct iscsi_np *np) new_sess_out: new_sess = true; old_sess_out: +iscsi_stop_login_thread_timer (np); tpg_np = conn->tpg_np; -iscsi_target_login_sess_out (conn, np, zero_tsih, new_sess); +iscsi_target_login_sess_out (conn, zero_tsih, new_sess); new_sess = false;if (tpg) {
drivers/target/iscsi/iscsi_target_login.h +1 -2
@@ -22,8 +22,7 @@ extern int iscsit_put_login_tx(struct iscsi_conn *, struct iscsi_login *, u32);extern void iscsit_free_conn (struct iscsi_np *,struct iscsi_conn *);extern int iscsit_start_kthreads (struct iscsi_conn *);extern void iscsi_post_login_handler (struct iscsi_np *,struct iscsi_conn *,u8 ); -extern void iscsi_target_login_sess_out (struct iscsi_conn *,struct iscsi_np *, -bool ,bool ); +extern void iscsi_target_login_sess_out (struct iscsi_conn *,bool ,bool );extern int iscsi_target_login_thread (void *);#endif /*** ISCSI_TARGET_LOGIN_H ***/
drivers/target/iscsi/iscsi_target_nego.c +1 -2
@@ -554,12 +554,11 @@ static bool iscsi_target_sk_check_and_clear(struct iscsi_conn *conn, unsigned instatic void iscsi_target_login_drop (struct iscsi_conn *conn,struct iscsi_login *login) { -struct iscsi_np *np = login->np;bool zero_tsih = login->zero_tsih;iscsi_remove_failed_auth_entry (conn);iscsi_target_nego_release (conn); -iscsi_target_login_sess_out (conn, np, zero_tsih, true); +iscsi_target_login_sess_out (conn, zero_tsih, true); }static void iscsi_target_login_timeout (unsigned long data)
drivers/tty/serial/8250/8250_pci.c +11 -0
@@ -5247,6 +5247,17 @@ static const struct pci_device_id serial_pci_tbl[] = {PCI_ANY_ID ,PCI_ANY_ID , 0, 0, pbn_wch384_4 }, +/* +* Realtek RealManage +*/ + { PCI_VENDOR_ID_REALTEK, 0x816a, +PCI_ANY_ID ,PCI_ANY_ID , + 0, 0, pbn_b0_1_115200 }, + + { PCI_VENDOR_ID_REALTEK, 0x816b, +PCI_ANY_ID ,PCI_ANY_ID , + 0, 0, pbn_b0_1_115200 }, +/* Fintek PCI serial cards */ { PCI_DEVICE(0x1c29, 0x1104), .driver_data = pbn_fintek_4 }, { PCI_DEVICE(0x1c29, 0x1108), .driver_data = pbn_fintek_8 },
drivers/usb/class/usblp.c +5 -0
@@ -840,6 +840,11 @@ static ssize_t usblp_read(struct file *file, char __user *buffer, size_t len, loif (rv <0 )return rv; +if (!usblp->present) { + count = -ENODEV ; + goto done; + } +if ((avail = usblp->rstatus) <0 ) {printk (KERN_ERR "usblp%d: error %d reading from printer\n" , usblp->minor, (int )avail);
drivers/usb/core/message.c +42 -49
135 lines not on this page · raw message
drivers/usb/core/quirks.c +4 -0
@@ -236,6 +236,10 @@ static const struct usb_device_id usb_quirk_list[] = {/* Generic RTL8153 based ethernet adapters */ { USB_DEVICE(0x0bda, 0x8153), .driver_info = USB_QUIRK_NO_LPM }, + /* SONiX USB DEVICE Touchpad */ + { USB_DEVICE(0x0c45, 0x7056), .driver_info = + USB_QUIRK_IGNORE_REMOTE_WAKEUP }, + /* Action Semiconductor flash disk */ { USB_DEVICE(0x10d6, 0x2200), .driver_info = USB_QUIRK_STRING_FETCH_255 },
drivers/usb/core/sysfs.c +5 -0
@@ -865,7 +865,11 @@ read_descriptors(struct file *filp, struct kobject *kobj,size_t srclen, n;int cfgno;void *src; +int retval; + retval =usb_lock_device_interruptible (udev); +if (retval <0 ) +return -EINTR ;/* The binary attribute begins with the device descriptor. * Following that are the raw descriptor entries for all the * configurations (config plus subsidiary descriptors).
@@ -890,6 +894,7 @@ read_descriptors(struct file *filp, struct kobject *kobj, off -= srclen; } } +usb_unlock_device (udev);return count - nleft; }
drivers/usb/host/ehci-hcd.c +1 -0
@@ -35,6 +35,7 @@#include <linux/interrupt.h> #include <linux/usb.h> #include <linux/usb/hcd.h> +#include <linux/usb/otg.h> #include <linux/moduleparam.h> #include <linux/dma-mapping.h> #include <linux/debugfs.h>
drivers/usb/host/ehci-hub.c +0 -1
@@ -27,7 +27,6 @@*/ /*-------------------------------------------------------------------------*/ -#include <linux/usb/otg.h> #define PORT_WAKE_BITS (PORT_WKOC_E|PORT_WKDISC_E|PORT_WKCONN_E)
drivers/usb/serial/ftdi_sio.c +1 -0
@@ -708,6 +708,7 @@ static const struct usb_device_id id_table_combined[] = { { USB_DEVICE(XSENS_VID, XSENS_AWINDA_STATION_PID) }, { USB_DEVICE(XSENS_VID, XSENS_CONVERTER_PID) }, { USB_DEVICE(XSENS_VID, XSENS_MTDEVBOARD_PID) }, + { USB_DEVICE(XSENS_VID, XSENS_MTIUSBCONVERTER_PID) }, { USB_DEVICE(XSENS_VID, XSENS_MTW_PID) }, { USB_DEVICE(FTDI_VID, FTDI_OMNI1509) }, { USB_DEVICE(MOBILITY_VID, MOBILITY_USB_SERIAL_PID) },
drivers/usb/serial/ftdi_sio_ids.h +1 -0
@@ -160,6 +160,7 @@#define XSENS_AWINDA_DONGLE_PID 0x0102#define XSENS_MTW_PID 0x0200/* Xsens MTw */ #define XSENS_MTDEVBOARD_PID 0x0300/* Motion Tracker Development Board */ +#define XSENS_MTIUSBCONVERTER_PID 0x0301/* MTi USB converter */ #define XSENS_CONVERTER_PID 0xD00D/* Xsens USB-serial converter */ /* Xsens devices using FTDI VID */
drivers/usb/serial/option.c +14 -8
@@ -1097,14 +1097,18 @@ static const struct usb_device_id option_ids[] = { { USB_DEVICE(QUALCOMM_VENDOR_ID, UBLOX_PRODUCT_R410M), .driver_info = RSVD(1) | RSVD(3) }, /* Quectel products using Quectel vendor ID */ - { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC21), - .driver_info = RSVD(4) }, - { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC25), - .driver_info = RSVD(4) }, - { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG95), - .driver_info = RSVD(4) }, - { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96), - .driver_info = RSVD(4) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC21, 0xff, 0xff, 0xff), + .driver_info = NUMEP2 }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC21, 0xff, 0, 0) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC25, 0xff, 0xff, 0xff), + .driver_info = NUMEP2 }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC25, 0xff, 0, 0) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG95, 0xff, 0xff, 0xff), + .driver_info = NUMEP2 }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG95, 0xff, 0, 0) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96, 0xff, 0xff, 0xff), + .driver_info = NUMEP2 }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96, 0xff, 0, 0) }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06, 0xff, 0xff, 0xff), .driver_info = RSVD(1) | RSVD(2) | RSVD(3) | RSVD(4) | NUMEP2 }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06, 0xff, 0, 0) },
@@ -1822,6 +1826,8 @@ static const struct usb_device_id option_ids[] = { { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9003, 0xff) }, /* Simcom SIM7500/SIM7600 MBIM mode */ { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9011, 0xff), /* Simcom SIM7500/SIM7600 RNDIS mode */ .driver_info = RSVD(7) }, + { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9205, 0xff) }, /* Simcom SIM7070/SIM7080/SIM7090 AT+ECM mode */ + { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9206, 0xff) }, /* Simcom SIM7070/SIM7080/SIM7090 AT-only mode */ { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X060S_X200), .driver_info = NCTRL(0) | NCTRL(1) | RSVD(4) }, { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X220_X500D),
drivers/usb/storage/uas.c +12 -2
@@ -670,8 +670,7 @@ static int uas_queuecommand_lck(struct scsi_cmnd *cmnd,if (devinfo->resetting) { cmnd->result =DID_ERROR <<16 ; cmnd->scsi_done (cmnd); -spin_unlock_irqrestore (&devinfo->lock, flags); -return 0 ; + goto zombie; }/* Find a free uas-tag */
@@ -706,6 +705,16 @@ static int uas_queuecommand_lck(struct scsi_cmnd *cmnd, cmdinfo->state &= ~(SUBMIT_DATA_IN_URB |SUBMIT_DATA_OUT_URB ); err =uas_submit_urbs (cmnd, devinfo); +/* +* in case of fatal errors the SCSI layer is peculiar +* a command that has finished is a success for the purpose +* of queueing, no matter how fatal the error +*/ +if (err == -ENODEV ) { + cmnd->result =DID_ERROR <<16 ; + cmnd->scsi_done (cmnd); + goto zombie; + }if (err) {/* If we did nothing, give up now */ if (cmdinfo->state &SUBMIT_STATUS_URB ) {
@@ -716,6 +725,7 @@ static int uas_queuecommand_lck(struct scsi_cmnd *cmnd, } devinfo->cmnd[idx] = cmnd; +zombie:spin_unlock_irqrestore (&devinfo->lock, flags);return 0 ; }
drivers/usb/typec/ucsi/ucsi_acpi.c +4 -0
@@ -67,11 +67,15 @@ static void ucsi_acpi_notify(acpi_handle handle, u32 event, void *data)static int ucsi_acpi_probe (struct platform_device *pdev) { +struct acpi_device *adev =ACPI_COMPANION (&pdev->dev);struct ucsi_acpi *ua;struct resource *res;acpi_status status;int ret; +if (adev->dep_unmet) +return -EPROBE_DEFER ; + ua =devm_kzalloc (&pdev->dev,sizeof (*ua),GFP_KERNEL );if (!ua)return -ENOMEM ;
drivers/video/console/Kconfig +0 -46
52 lines not on this page · raw message
drivers/video/console/vgacon.c +1 -219
256 lines not on this page · raw message
drivers/video/fbdev/core/bitblit.c +1 -10
@@ -234,7 +234,7 @@ static void bit_clear_margins(struct vc_data *vc, struct fb_info *info, }static void bit_cursor (struct vc_data *vc,struct fb_info *info,int mode, -int softback_lines,int fg,int bg) +int fg,int bg) {struct fb_cursor cursor;struct fbcon_ops *ops = info->fbcon_par;
@@ -247,15 +247,6 @@ static void bit_cursor(struct vc_data *vc, struct fb_info *info, int mode, cursor.set =0 ; -if (softback_lines) { -if (y + softback_lines >= vc->vc_rows) { - mode =CM_ERASE ; - ops->cursor_flash =0 ; -return ; - }else - y += softback_lines; - } - c =scr_readw ((u16 *) vc->vc_pos); attribute =get_attribute (info, c); src = vc->vc_font.data + ((c & charmask) * (w * vc->vc_font.height));
drivers/video/fbdev/core/fbcon.c +5 -331
481 lines not on this page · raw message
drivers/video/fbdev/core/fbcon.h +1 -1
@@ -62,7 +62,7 @@ struct fbcon_ops {void (*clear_margins)(struct vc_data *vc,struct fb_info *info,int color,int bottom_only);void (*cursor)(struct vc_data *vc,struct fb_info *info,int mode, -int softback_lines,int fg,int bg); +int fg,int bg);int (*update_start)(struct fb_info *info);int (*rotate_font)(struct fb_info *info,struct vc_data *vc);struct fb_var_screeninfo var;/* copy of the current fb_var_screeninfo */
drivers/video/fbdev/core/fbcon_ccw.c +1 -10
@@ -219,7 +219,7 @@ static void ccw_clear_margins(struct vc_data *vc, struct fb_info *info, }static void ccw_cursor (struct vc_data *vc,struct fb_info *info,int mode, -int softback_lines,int fg,int bg) +int fg,int bg) {struct fb_cursor cursor;struct fbcon_ops *ops = info->fbcon_par;
@@ -236,15 +236,6 @@ static void ccw_cursor(struct vc_data *vc, struct fb_info *info, int mode, cursor.set =0 ; -if (softback_lines) { -if (y + softback_lines >= vc->vc_rows) { - mode =CM_ERASE ; - ops->cursor_flash =0 ; -return ; - }else - y += softback_lines; - } - c =scr_readw ((u16 *) vc->vc_pos); attribute =get_attribute (info, c); src = ops->fontbuffer + ((c & charmask) * (w * vc->vc_font.width));
drivers/video/fbdev/core/fbcon_cw.c +1 -10
@@ -202,7 +202,7 @@ static void cw_clear_margins(struct vc_data *vc, struct fb_info *info, }static void cw_cursor (struct vc_data *vc,struct fb_info *info,int mode, -int softback_lines,int fg,int bg) +int fg,int bg) {struct fb_cursor cursor;struct fbcon_ops *ops = info->fbcon_par;
@@ -219,15 +219,6 @@ static void cw_cursor(struct vc_data *vc, struct fb_info *info, int mode, cursor.set =0 ; -if (softback_lines) { -if (y + softback_lines >= vc->vc_rows) { - mode =CM_ERASE ; - ops->cursor_flash =0 ; -return ; - }else - y += softback_lines; - } - c =scr_readw ((u16 *) vc->vc_pos); attribute =get_attribute (info, c); src = ops->fontbuffer + ((c & charmask) * (w * vc->vc_font.width));
drivers/video/fbdev/core/fbcon_ud.c +1 -10
@@ -249,7 +249,7 @@ static void ud_clear_margins(struct vc_data *vc, struct fb_info *info, }static void ud_cursor (struct vc_data *vc,struct fb_info *info,int mode, -int softback_lines,int fg,int bg) +int fg,int bg) {struct fb_cursor cursor;struct fbcon_ops *ops = info->fbcon_par;
@@ -267,15 +267,6 @@ static void ud_cursor(struct vc_data *vc, struct fb_info *info, int mode, cursor.set =0 ; -if (softback_lines) { -if (y + softback_lines >= vc->vc_rows) { - mode =CM_ERASE ; - ops->cursor_flash =0 ; -return ; - }else - y += softback_lines; - } - c =scr_readw ((u16 *) vc->vc_pos); attribute =get_attribute (info, c); src = ops->fontbuffer + ((c & charmask) * (w * vc->vc_font.height));
drivers/video/fbdev/core/tileblit.c +1 -1
@@ -80,7 +80,7 @@ static void tile_clear_margins(struct vc_data *vc, struct fb_info *info, }static void tile_cursor (struct vc_data *vc,struct fb_info *info,int mode, -int softback_lines,int fg,int bg) +int fg,int bg) {struct fb_tilecursor cursor;int use_sw = (vc->vc_cursor_type &0x10 );
drivers/video/fbdev/vga16fb.c +1 -1
@@ -1122,7 +1122,7 @@ static void vga_8planes_imageblit(struct fb_info *info, const struct fb_image *ichar oldop =setop (0 );char oldsr =setsr (0 );char oldmask =selectmask (); -const char *cdat = image->data; +const unsigned char *cdat = image->data;u32 dx = image->dx;char __iomem *where;int y;
fs/btrfs/extent-tree.c +9 -10
@@ -1170,12 +1170,11 @@ int btrfs_get_extent_inline_ref_type(const struct extent_buffer *eb,if (type ==BTRFS_SHARED_BLOCK_REF_KEY ) {ASSERT (eb->fs_info);/* -* Every shared one has parent tree -* block, which must be aligned to -* nodesize. +* Every shared one has parent tree block, +* which must be aligned to sector size. */ if (offset && -IS_ALIGNED (offset, eb->fs_info->nodesize)) +IS_ALIGNED (offset, eb->fs_info->sectorsize))return type; } }else if (is_data ==BTRFS_REF_TYPE_DATA ) {
@@ -1184,12 +1183,11 @@ int btrfs_get_extent_inline_ref_type(const struct extent_buffer *eb,if (type ==BTRFS_SHARED_DATA_REF_KEY ) {ASSERT (eb->fs_info);/* -* Every shared one has parent tree -* block, which must be aligned to -* nodesize. +* Every shared one has parent tree block, +* which must be aligned to sector size. */ if (offset && -IS_ALIGNED (offset, eb->fs_info->nodesize)) +IS_ALIGNED (offset, eb->fs_info->sectorsize))return type; } }else {
@@ -1199,8 +1197,9 @@ int btrfs_get_extent_inline_ref_type(const struct extent_buffer *eb, }btrfs_print_leaf ((struct extent_buffer *)eb); -btrfs_err (eb->fs_info,"eb %llu invalid extent inline ref type %d" , - eb->start, type); +btrfs_err (eb->fs_info, +"eb %llu iref 0x%lx invalid extent inline ref type %d" , + eb->start, (unsigned long )iref, type);WARN_ON (1 );return BTRFS_REF_TYPE_INVALID ;
fs/btrfs/ioctl.c +2 -1
@@ -2131,7 +2131,8 @@ static noinline int search_ioctl(struct inode *inode, key.offset = sk->min_offset;while (1 ) { - ret =fault_in_pages_writeable (ubuf, *buf_size - sk_offset); + ret =fault_in_pages_writeable (ubuf + sk_offset, + *buf_size - sk_offset);if (ret)break ;
fs/btrfs/print-tree.c +7 -5
@@ -116,9 +116,10 @@ static void print_extent_item(struct extent_buffer *eb, int slot, int type)* offset is supposed to be a tree block which * must be aligned to nodesize. */ -if (!IS_ALIGNED (offset, eb->fs_info->nodesize)) -pr_info ("\t\t\t(parent %llu is NOT ALIGNED to nodesize %llu)\n" , - offset, (unsigned long long )eb->fs_info->nodesize); +if (!IS_ALIGNED (offset, eb->fs_info->sectorsize)) +pr_info ( +"\t\t\t(parent %llu not aligned to sectorsize %u)\n" , + offset, eb->fs_info->sectorsize);break ;case BTRFS_EXTENT_DATA_REF_KEY : dref = (struct btrfs_extent_data_ref *)(&iref->offset);
@@ -133,8 +134,9 @@ static void print_extent_item(struct extent_buffer *eb, int slot, int type)* must be aligned to nodesize. */ if (!IS_ALIGNED (offset, eb->fs_info->nodesize)) -pr_info ("\t\t\t(parent %llu is NOT ALIGNED to nodesize %llu)\n" , - offset, (unsigned long long )eb->fs_info->nodesize); +pr_info ( +"\t\t\t(parent %llu not aligned to sectorsize %u)\n" , + offset, eb->fs_info->sectorsize);break ;default : pr_cont("(extent %llu has INVALID ref type %d)\n",
fs/btrfs/volumes.c +10 -0
@@ -16,6 +16,7 @@* Boston, MA 021110-1307, USA. */ #include <linux/sched.h> +#include <linux/sched/mm.h> #include <linux/bio.h> #include <linux/slab.h> #include <linux/buffer_head.h>
@@ -6278,8 +6279,17 @@ static struct btrfs_device *add_missing_dev(struct btrfs_fs_devices *fs_devices, u64 devid, u8 *dev_uuid) { struct btrfs_device *device; +unsigned int nofs_flag; +/* +* We call this under the chunk_mutex, so we want to use NOFS for this +* allocation, however we don't want to change btrfs_alloc_device() to +* always do NOFS because we use it in a lot of other GFP_KERNEL safe +* places. +*/ + nofs_flag =memalloc_nofs_save (); device =btrfs_alloc_device (NULL , &devid, dev_uuid); +memalloc_nofs_restore (nofs_flag);if (IS_ERR (device))return NULL ;
fs/f2fs/node.c +3 -0
@@ -2011,6 +2011,9 @@ static void __build_free_nids(struct f2fs_sb_info *sbi, bool sync, bool mount)if (unlikely (nid >= nm_i->max_nid)) nid =0 ; +if (unlikely (nid %NAT_ENTRY_PER_BLOCK )) + nid =NAT_BLOCK_OFFSET (nid) *NAT_ENTRY_PER_BLOCK ; +/* Enough entries */ if (nm_i->nid_cnt[FREE_NID_LIST ] >=NAT_ENTRY_PER_BLOCK )return ;
fs/gfs2/glops.c +2 -0
@@ -89,6 +89,8 @@ static void gfs2_ail_empty_gl(struct gfs2_glock *gl)memset (&tr,0 ,sizeof (tr));INIT_LIST_HEAD (&tr.tr_buf);INIT_LIST_HEAD (&tr.tr_databuf); +INIT_LIST_HEAD (&tr.tr_ail1_list); +INIT_LIST_HEAD (&tr.tr_ail2_list); tr.tr_revokes =atomic_read (&gl->gl_ail_count);if (!tr.tr_revokes)
fs/gfs2/log.c +0 -2
@@ -734,8 +734,6 @@ void gfs2_log_flush(struct gfs2_sbd *sdp, struct gfs2_glock *gl, tr = sdp->sd_log_tr;if (tr) { sdp->sd_log_tr =NULL ; -INIT_LIST_HEAD (&tr->tr_ail1_list); -INIT_LIST_HEAD (&tr->tr_ail2_list); tr->tr_first = sdp->sd_log_flush_head;if (unlikely (state ==SFS_FROZEN ))gfs2_assert_withdraw (sdp, !tr->tr_num_buf_new && !tr->tr_num_databuf_new);
fs/gfs2/trans.c +2 -0
@@ -56,6 +56,8 @@ int gfs2_trans_begin(struct gfs2_sbd *sdp, unsigned int blocks, sizeof(u64));INIT_LIST_HEAD (&tr->tr_databuf);INIT_LIST_HEAD (&tr->tr_buf); +INIT_LIST_HEAD (&tr->tr_ail1_list); +INIT_LIST_HEAD (&tr->tr_ail2_list);sb_start_intwrite (sdp->sd_vfs);
fs/nfs/nfs4proc.c +6 -1
@@ -6687,7 +6687,12 @@ int nfs4_lock_delegation_recall(struct file_lock *fl, struct nfs4_state *state, err =nfs4_set_lock_state (state, fl);if (err !=0 )return err; - err =_nfs4_do_setlk (state,F_SETLK , fl,NFS_LOCK_NEW ); +do { + err =_nfs4_do_setlk (state,F_SETLK , fl,NFS_LOCK_NEW ); +if (err != -NFS4ERR_DELAY ) +break ; +ssleep (1 ); + }while (err == -NFS4ERR_DELAY );return nfs4_handle_delegation_recall_error (server, state, stateid, fl, err); }
fs/xfs/libxfs/xfs_attr_leaf.c +2 -2
@@ -520,8 +520,8 @@ xfs_attr_shortform_create(xfs_da_args_t *args)ASSERT (ifp->if_flags &XFS_IFINLINE ); }xfs_idata_realloc (dp,sizeof (*hdr),XFS_ATTR_FORK ); - hdr = (xfs_attr_sf_hdr_t *)ifp->if_u1.if_data; - hdr->count =0 ; + hdr = (struct xfs_attr_sf_hdr *)ifp->if_u1.if_data; +memset (hdr,0 ,sizeof (*hdr)); hdr->totsize =cpu_to_be16 (sizeof (*hdr));xfs_trans_log_inode (args->trans, dp,XFS_ILOG_CORE |XFS_ILOG_ADATA ); }
include/linux/i2c-algo-pca.h +15 -0
@@ -53,6 +53,20 @@#define I2C_PCA_CON_SI 0x08/* Serial Interrupt */ #define I2C_PCA_CON_CR 0x07/* Clock Rate (MASK) */ +/** +* struct pca_i2c_bus_settings - The configured PCA i2c bus settings +* @mode: Configured i2c bus mode +* @tlow: Configured SCL LOW period +* @thi: Configured SCL HIGH period +* @clock_freq: The configured clock frequency +*/ +struct pca_i2c_bus_settings { +int mode; +int tlow; +int thi; +int clock_freq; +}; +struct i2c_algo_pca_data {void *data;/* private low level data */ void (*write_byte) (void *data,int reg,int val);
@@ -64,6 +78,7 @@ struct i2c_algo_pca_data {* For PCA9665, use the frequency you want here. */ unsigned int i2c_clock;unsigned int chip; +struct pca_i2c_bus_settings bus_settings; };int i2c_pca_add_bus (struct i2c_adapter *);
include/soc/nps/common.h +6 -0
@@ -45,6 +45,12 @@#define CTOP_INST_MOV2B_FLIP_R3_B1_B2_INST 0x5B60#define CTOP_INST_MOV2B_FLIP_R3_B1_B2_LIMM 0x00010422 +#ifndef AUX_IENABLE +#define AUX_IENABLE 0x40c +#endif + +#define CTOP_AUX_IACK (0xFFFFF800 + 0x088) +#ifndef __ASSEMBLY__/* In order to increase compilation test coverage */
include/uapi/linux/kvm.h +3 -2
@@ -735,9 +735,10 @@ struct kvm_ppc_resize_hpt {#define KVM_VM_PPC_HV 1#define KVM_VM_PPC_PR 2 -/* on MIPS, 0 forces trap & emulate, 1 forces VZ ASE */ -#define KVM_VM_MIPS_TE 0 +/* on MIPS, 0 indicates auto, 1 forces VZ ASE, 2 forces trap & emulate */ +#define KVM_VM_MIPS_AUTO 0#define KVM_VM_MIPS_VZ 1 +#define KVM_VM_MIPS_TE 2#define KVM_S390_SIE_PAGE_OFFSET 1
kernel/gcov/gcc_4_7.c +3 -1
@@ -19,7 +19,9 @@#include <linux/vmalloc.h> #include "gcov.h" -#if (__GNUC__ >=7 ) +#if (__GNUC__ >=10 ) +#define GCOV_COUNTERS 8 +#elif (__GNUC__ >=7 )#define GCOV_COUNTERS 9#elif (__GNUC__ >5 ) || (__GNUC__ ==5 && __GNUC_MINOR__ >=1 )#define GCOV_COUNTERS 10
mm/percpu.c +1 -1
@@ -1099,7 +1099,7 @@ static struct pcpu_chunk * __init pcpu_alloc_first_chunk(unsigned long tmp_addr,/* allocate chunk */ chunk =memblock_virt_alloc (sizeof (struct pcpu_chunk ) + -BITS_TO_LONGS (region_size >>PAGE_SHIFT ), +BITS_TO_LONGS (region_size >>PAGE_SHIFT ) *sizeof (unsigned long ),0 );INIT_LIST_HEAD (&chunk->list);
net/core/skbuff.c +7 -3
@@ -5447,9 +5447,13 @@ static int pskb_carve_inside_nonlinear(struct sk_buff *skb, const u32 off,if (skb_has_frag_list (skb))skb_clone_fraglist (skb); -if (k ==0 ) { -/* split line is in frag list */ -pskb_carve_frag_list (skb, shinfo, off - pos, gfp_mask); +/* split line is in frag list */ +if (k ==0 &&pskb_carve_frag_list (skb, shinfo, off - pos, gfp_mask)) { +/* skb_frag_unref() is not needed here as shinfo->nr_frags = 0. */ +if (skb_has_frag_list (skb)) +kfree_skb_list (skb_shinfo (skb)->frag_list); +kfree (data); +return -ENOMEM ; }skb_release_data (skb);
net/sunrpc/rpcb_clnt.c +2 -2
@@ -981,8 +981,8 @@ static int rpcb_dec_getaddr(struct rpc_rqst *req, struct xdr_stream *xdr, p =xdr_inline_decode (xdr, len);if (unlikely (p ==NULL )) goto out_fail; -dprintk ("RPC: %5u RPCB_%s reply: %s\n" , req->rq_task->tk_pid, - req->rq_task->tk_msg.rpc_proc->p_name, (char *)p); +dprintk ("RPC: %5u RPCB_%s reply: %*pE\n" , req->rq_task->tk_pid, + req->rq_task->tk_msg.rpc_proc->p_name, len, (char *)p);if (rpc_uaddr2sockaddr (req->rq_xprt->xprt_net, (char *)p, len, sap,sizeof (address)) ==0 )
sound/hda/hdac_device.c +2 -0
@@ -123,6 +123,8 @@ EXPORT_SYMBOL_GPL(snd_hdac_device_init);void snd_hdac_device_exit (struct hdac_device *codec) {pm_runtime_put_noidle (&codec->dev); +/* keep balance of runtime PM child_count in parent device */ +pm_runtime_set_suspended (&codec->dev);snd_hdac_bus_remove_device (codec->bus, codec);kfree (codec->vendor_name);kfree (codec->chip_name);
sound/pci/hda/patch_hdmi.c +5 -0
@@ -3399,6 +3399,7 @@ static int tegra_hdmi_build_pcms(struct hda_codec *codec)static int patch_tegra_hdmi (struct hda_codec *codec) { +struct hdmi_spec *spec;int err; err =patch_generic_hdmi (codec);
@@ -3406,6 +3407,10 @@ static int patch_tegra_hdmi(struct hda_codec *codec)return err; codec->patch_ops.build_pcms = tegra_hdmi_build_pcms; + spec = codec->spec; + spec->chmap.ops.chmap_cea_alloc_validate_get_type = + nvhdmi_chmap_cea_alloc_validate_get_type; + spec->chmap.ops.chmap_validate = nvhdmi_chmap_validate;return 0 ; }
tools/perf/tests/pmu.c +1 -0
@@ -172,6 +172,7 @@ int test__pmu(struct test *test __maybe_unused, int subtest __maybe_unused) ret =0 ; }while (0 ); +perf_pmu__del_formats (&formats);test_format_dir_put (format);return ret; }
tools/perf/util/pmu.c +11 -0
@@ -1100,6 +1100,17 @@ void perf_pmu__set_format(unsigned long *bits, long from, long to)set_bit (b, bits); } +void perf_pmu__del_formats (struct list_head *formats) +{ +struct perf_pmu_format *fmt, *tmp; + +list_for_each_entry_safe (fmt, tmp, formats, list) { +list_del (&fmt->list); +free (fmt->name); +free (fmt); + } +} +static int sub_non_neg (int a,int b) {if (b > a)
tools/perf/util/pmu.h +1 -0
@@ -79,6 +79,7 @@ int perf_pmu__new_format(struct list_head *list, char *name, int config, unsigned long *bits);void perf_pmu__set_format (unsigned long *bits,long from,long to);int perf_pmu__format_parse (char *dir,struct list_head *head); +void perf_pmu__del_formats (struct list_head *formats);struct perf_pmu *perf_pmu__scan (struct perf_pmu *pmu);