Linux 5.4.44
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.4.44 kernel.
All users of the 5.4 kernel series must upgrade.
The updated 5.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.4.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/arm/boot/compressed/vmlinux.lds.S | 2 arch/arm/boot/dts/bcm-hr2.dtsi | 6 arch/arm/boot/dts/bcm2835-rpi-zero-w.dts | 2 arch/arm/boot/dts/imx6q-b450v3.dts | 7 arch/arm/boot/dts/imx6q-b650v3.dts | 7 arch/arm/boot/dts/imx6q-b850v3.dts | 11 - arch/arm/boot/dts/imx6q-bx50v3.dtsi | 15 ++ arch/arm/boot/dts/rk3036.dtsi | 2 arch/arm/boot/dts/rk3228-evb.dts | 2 arch/arm/boot/dts/rk3229-xms6.dts | 2 arch/arm/boot/dts/rk322x.dtsi | 6 arch/arm/boot/dts/rk3xxx.dtsi | 2 arch/arm/include/asm/assembler.h | 75 ---------- arch/arm/include/asm/uaccess-asm.h | 117 ++++++++++++++++ arch/arm/kernel/entry-armv.S | 11 - arch/arm/kernel/entry-header.S | 9 - arch/arm64/boot/dts/mediatek/mt8173.dtsi | 4 arch/arm64/boot/dts/rockchip/rk3328-evb.dts | 2 arch/arm64/boot/dts/rockchip/rk3399.dtsi | 8 - arch/csky/abiv1/inc/abi/entry.h | 4 arch/csky/abiv2/inc/abi/entry.h | 4 arch/csky/include/asm/uaccess.h | 49 +++--- arch/csky/kernel/entry.S | 2 arch/csky/kernel/perf_callchain.c | 9 - arch/csky/lib/usercopy.c | 8 - arch/parisc/mm/init.c | 2 arch/riscv/kernel/stacktrace.c | 2 arch/x86/include/asm/dma.h | 2 arch/x86/include/uapi/asm/unistd.h | 11 + arch/x86/kernel/fpu/xstate.c | 86 ++++++----- block/blk-core.c | 11 - drivers/clk/qcom/gcc-sm8150.c | 3 drivers/clk/ti/clk-33xx.c | 2 drivers/crypto/chelsio/chtls/chtls_io.c | 2 drivers/gpio/gpio-bcm-kona.c | 2 drivers/gpio/gpio-exar.c | 7 drivers/gpio/gpio-pxa.c | 4 drivers/gpio/gpio-tegra.c | 1 drivers/gpio/gpiolib.c | 11 + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 5 drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c | 6 drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 12 - drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 7 drivers/gpu/drm/amd/powerplay/amd_powerplay.c | 6 drivers/gpu/drm/amd/powerplay/amdgpu_smu.c | 6 drivers/gpu/drm/ingenic/ingenic-drm.c | 2 drivers/hwmon/nct7904.c | 4 drivers/infiniband/core/rdma_core.c | 20 +- drivers/infiniband/hw/i40iw/i40iw_cm.c | 8 - drivers/infiniband/hw/qib/qib_sysfs.c | 9 - drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c | 2 drivers/infiniband/ulp/ipoib/ipoib.h | 4 drivers/infiniband/ulp/ipoib/ipoib_cm.c | 15 +- drivers/infiniband/ulp/ipoib/ipoib_ib.c | 9 - drivers/infiniband/ulp/ipoib/ipoib_main.c | 10 - drivers/input/evdev.c | 19 -- drivers/input/joystick/xpad.c | 12 + drivers/input/keyboard/dlink-dir685-touchkeys.c | 2 drivers/input/rmi4/rmi_driver.c | 5 drivers/input/serio/i8042-x86ia64io.h | 7 drivers/input/touchscreen/usbtouchscreen.c | 1 drivers/iommu/iommu.c | 2 drivers/mmc/core/block.c | 2 drivers/net/bonding/bond_sysfs_slave.c | 4 drivers/net/dsa/mt7530.c | 9 - drivers/net/dsa/mt7530.h | 1 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 drivers/net/ethernet/freescale/Kconfig | 2 drivers/net/ethernet/freescale/dpaa/Kconfig | 1 drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 2 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c | 2 drivers/net/ethernet/mellanox/mlx4/fw.c | 2 drivers/net/ethernet/mellanox/mlx5/core/cmd.c | 14 + drivers/net/ethernet/mellanox/mlx5/core/en.h | 2 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 12 - drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 4 drivers/net/ethernet/mellanox/mlx5/core/en_tx.c | 9 - drivers/net/ethernet/mellanox/mlx5/core/events.c | 4 drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 6 drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c | 4 drivers/net/ethernet/mellanox/mlx5/core/main.c | 3 drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 14 + drivers/net/ethernet/mellanox/mlxsw/switchx2.c | 8 + drivers/net/ethernet/microchip/encx24j600.c | 5 drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c | 4 drivers/net/ethernet/sun/cassini.c | 3 drivers/net/ethernet/ti/cpsw.c | 4 drivers/net/hamradio/bpqether.c | 3 drivers/net/usb/cdc_ether.c | 11 + drivers/net/usb/r8152.c | 1 drivers/soc/mediatek/mtk-cmdq-helper.c | 4 drivers/usb/dwc3/dwc3-pci.c | 1 drivers/usb/gadget/legacy/inode.c | 3 drivers/usb/phy/phy-twl6030-usb.c | 12 + fs/binfmt_elf.c | 2 fs/cachefiles/rdwr.c | 2 fs/ceph/caps.c | 2 fs/cifs/file.c | 2 fs/gfs2/log.c | 6 fs/gfs2/quota.c | 3 fs/gfs2/quota.h | 3 include/asm-generic/topology.h | 2 include/linux/ieee80211.h | 2 include/linux/mlx5/driver.h | 1 include/linux/mm.h | 15 +- include/linux/netfilter/nf_conntrack_pptp.h | 2 include/net/act_api.h | 3 include/net/ip_fib.h | 11 + include/net/nexthop.h | 67 ++++++--- include/net/tls.h | 4 include/rdma/uverbs_std_types.h | 2 include/uapi/linux/xfrm.h | 2 mm/khugepaged.c | 1 net/ax25/af_ax25.c | 6 net/bridge/netfilter/nft_reject_bridge.c | 6 net/ceph/osd_client.c | 4 net/core/dev.c | 20 ++ net/dsa/slave.c | 1 net/dsa/tag_mtk.c | 15 ++ net/ipv4/esp4_offload.c | 4 net/ipv4/fib_frontend.c | 22 +-- net/ipv4/inet_connection_sock.c | 43 +++-- net/ipv4/ip_vti.c | 23 +++ net/ipv4/ipip.c | 2 net/ipv4/ipmr.c | 2 net/ipv4/netfilter/nf_nat_pptp.c | 7 net/ipv4/nexthop.c | 105 ++++++++------ net/ipv4/route.c | 14 - net/ipv6/esp6_offload.c | 13 + net/ipv6/ip6_fib.c | 2 net/ipv6/ip6mr.c | 2 net/mac80211/mesh_hwmp.c | 7 net/netfilter/ipset/ip_set_list_set.c | 2 net/netfilter/nf_conntrack_core.c | 80 +++++++++- net/netfilter/nf_conntrack_pptp.c | 62 ++++---- net/netfilter/nfnetlink_cthelper.c | 3 net/qrtr/qrtr.c | 2 net/sctp/sm_sideeffect.c | 14 + net/sctp/sm_statefuns.c | 9 - net/tipc/udp_media.c | 6 net/tls/tls_sw.c | 50 +++++- net/wireless/core.c | 2 net/xdp/xdp_umem.c | 8 - net/xfrm/xfrm_device.c | 8 - net/xfrm/xfrm_input.c | 2 net/xfrm/xfrm_interface.c | 21 ++ net/xfrm/xfrm_output.c | 15 +- net/xfrm/xfrm_policy.c | 7 samples/bpf/lwt_len_hist_user.c | 2 security/commoncap.c | 1 sound/core/hwdep.c | 4 sound/pci/hda/patch_realtek.c | 39 +++-- sound/usb/mixer.c | 8 + sound/usb/mixer_maps.c | 24 +++ sound/usb/quirks-table.h | 26 +++ tools/arch/x86/include/uapi/asm/unistd.h | 2 tools/perf/util/srcline.c | 16 ++ 159 files changed, 1099 insertions(+), 591 deletions(-)
Al Viro (2):
csky: Fixup raw_copy_from_user()
copy_xstate_to_kernel(): don't leave parts of destination uninitialized
Alexander Dahl (1):
x86/dma: Fix max PFN arithmetic overflow on 32 bit systems
Alexander Potapenko (1):
fs/binfmt_elf.c: allocate initialized memory in fill_thread_core_info()
Amy Shih (1):
hwmon: (nct7904) Fix incorrect range of temperature limit registers
Andreas Gruenbacher (1):
gfs2: Grab glock reference sooner in gfs2_add_revoke
Andrew Oakley (1):
ALSA: usb-audio: add mapping for ASRock TRX40 Creator
Andy Lutomirski (1):
x86/syscalls: Revert "x86/syscalls: Make __X32_SYSCALL_BIT be unsigned long"
Andy Shevchenko (1):
usb: dwc3: pci: Enable extcon driver for Intel Merrifield
Antony Antony (1):
xfrm: fix error in comment
Arnd Bergmann (2):
net: freescale: select CONFIG_FIXED_PHY where needed include/asm-generic/topology.h: guard cpumask_of_node() macro argument
Björn Töpel (1):
xsk: Add overflow check for u64 division, stored into u32
Bob Peterson (1):
gfs2: move privileged user check to gfs2_quota_lock_check
Boris Sukholitko (1):
__netif_receive_skb_core: pass skb by reference
Brendan Shanks (1):
Input: evdev - call input_flush_device() on release(), not flush()
Changbin Du (1):
perf: Make perf able to build with latest libbfd
Changming Liu (1):
ALSA: hwdep: fix a left shifting 1 by 31 UB bug
Chris Chiu (1):
ALSA: usb-audio: mixer: volume quirk for ESS Technology Asus USB DAC
Christophe JAILLET (2):
usb: phy: twl6030-usb: Fix a resource leak in an error handling path in 'twl6030_usb_probe()'
Input: dlink-dir685-touchkeys - fix a typo in driver name
Chuhong Yuan (1):
net: microchip: encx24j600: add missed kthread_stop
DENG Qingfang (1):
net: dsa: mt7530: fix roaming from DSA user ports
David Ahern (4):
nexthop: Fix attribute checking for groups
nexthops: Move code from remove_nexthop_from_groups to remove_nh_grp_entry
nexthop: Expand nexthop_is_multipath in a few places
ipv4: nexthop version of fib_info_nh_uses_dev
Denis V. Lunev (1):
IB/i40iw: Remove bogus call to netdev_master_upper_dev_get()
Dennis YC Hsieh (1):
soc: mediatek: cmdq: return send msg error code
Eric Dumazet (3):
ax25: fix setsockopt(SO_BINDTODEVICE)
tipc: block BH before using dst_cache
crypto: chelsio/chtls: properly set tp->lsndtime
Eric W. Biederman (1):
exec: Always set cap_ambient in cap_bprm_set_creds
Evan Green (1):
Input: synaptics-rmi4 - really fix attn_data use-after-free
Evan Quan (2):
drm/amdgpu: drop unnecessary cancel_delayed_work_sync on PG ungate drm/amd/powerplay: perform PG ungate prior to CG ungate
Felix Kuehling (1):
drm/amdgpu: Use GEM obj reference for KFD BOs
Greg Kroah-Hartman (1):
Linux 5.4.44
Grygorii Strashko (1):
net: ethernet: ti: cpsw: fix ASSERT_RTNL() warning during suspend
Hamish Martin (1):
ARM: dts: bcm: HR2: Fix PPI interrupt types
Helge Deller (1):
parisc: Fix kernel panic in mem_init()
Hsin-Yi Wang (1):
arm64: dts: mt8173: fix vcodec-enc clock
Hugh Dickins (1):
mm,thp: stop leaking unreleased file pages
James Hilliard (1):
Input: usbtouchscreen - add support for BonXeon TP
Jason Gunthorpe (1):
RDMA/core: Fix double destruction of uobject
Jeff Layton (1):
ceph: flush release queue when handling caps for unknown inode
Jens Axboe (1):
Revert "block: end bio with BLK_STS_AGAIN in case of non-mq devs and REQ_NOWAIT"
Jere Leppänen (1):
sctp: Start shutdown on association restart if in SHUTDOWN-SENT state and socket is closed
Jerry Lee (1):
libceph: ignore pool overlay and cache logic on redirects
Jiri Pirko (1):
mlxsw: spectrum: Fix use-after-free of split/unsplit/type_set in case reload fails
Johan Jonker (6):
ARM: dts: rockchip: fix phy nodename for rk3228-evb
ARM: dts: rockchip: fix phy nodename for rk3229-xms6
arm64: dts: rockchip: fix status for &gmac2phy in rk3328-evb.dts
arm64: dts: rockchip: swap interrupts interrupt-names rk3399 gpu node
ARM: dts: rockchip: swap clock-names of gpu nodes
ARM: dts: rockchip: fix pinctrl sub nodename for spi in rk322x.dtsi
Johannes Berg (1):
cfg80211: fix debugfs rename crash
Kaike Wan (1):
IB/qib: Call kobject_put() when kobject_init_and_add() fails
Kailang Yang (1):
ALSA: hda/realtek - Add new codec supported for ALC287
Kefeng Wang (1):
riscv: stacktrace: Fix undefined reference to `walk_stackframe'
Kevin Locke (1):
Input: i8042 - add ThinkPad S230u to i8042 reset list
Konstantin Khlebnikov (1):
mm: remove VM_BUG_ON(PageSlab()) from page_mapcount()
Lei Xue (1):
cachefiles: Fix race between read_waiter and read_copier involving op->to_do
Linus Lüssing (1):
mac80211: mesh: fix discovery timer re-arming issue / crash
Linus Walleij (1):
gpio: fix locking open drain IRQ lines
Liu Yibin (2):
csky: Fixup msa highest 3 bits mask
csky: Fixup remove duplicate irq_disable
Madhuparna Bhowmik (1):
drivers: net: hamradio: Fix suspicious RCU usage warning in bpqether.c
Manivannan Sadhasivam (1):
net: qrtr: Fix passing invalid reference to qrtr_local_enqueue()
Mao Han (1):
csky: Fixup perf callchain unwind
Marc Payne (1):
r8152: support additional Microsoft Surface Ethernet Adapter variant
Martin KaFai Lau (1):
net: inet_csk: Fix so_reuseport bind-address cache in tb->fast*
Masahiro Yamada (1):
usb: gadget: legacy: fix redundant initialization warnings
Matteo Croce (1):
samples: bpf: Fix build error
Michael Braun (1):
netfilter: nft_reject_bridge: enable reject with bridge vlan
Michael Chan (1):
bnxt_en: Fix accumulation of bp->net_stats_prev.
Moshe Shemesh (3):
net/mlx5: Add command entry handling completion net/mlx5: Fix memory leak in mlx5_events_init net/mlx5e: Update netdev txq on completions during closure
Nathan Chancellor (1):
netfilter: conntrack: Pass value of ctinfo to __nf_conntrack_update
Neil Horman (1):
sctp: Don't add the shutdown timer if its already been added
Nicolas Dichtel (1):
xfrm interface: fix oops when deleting a x-netns interface
Nikolay Aleksandrov (1):
nexthops: don't modify published nexthop groups
Pablo Neira Ayuso (5):
netfilter: conntrack: make conntrack userspace helpers work again
netfilter: nfnetlink_cthelper: unbreak userspace helper support
netfilter: nf_conntrack_pptp: prevent buffer overflows in debug code
netfilter: conntrack: comparison of unsigned in cthelper confirmation
netfilter: nf_conntrack_pptp: fix compilation warning with W=1 build
Paul Cercueil (1):
gpu/drm: Ingenic: Fix opaque pointer casted to wrong type
Peng Hao (1):
mmc: block: Fix use-after-free issue for rpmb
Phil Sutter (1):
netfilter: ipset: Fix subcounter update skip
Pradeep Kumar Chitrapu (1):
ieee80211: Fix incorrect mask for default PE duration
Qiushi Wu (6):
net: sun: fix missing release regions in cas_init_one(). net/mlx4_core: fix a memory leak bug. RDMA/pvrdma: Fix missing pci disable in pvrdma_pci_probe()
iommu: Fix reference count leak in iommu_group_alloc.
qlcnic: fix missing release in qlcnic_83xx_interrupt_test.
bonding: Fix reference count leak in bond_sysfs_slave_add.
Robert Beckett (1):
ARM: dts/imx6q-bx50v3: Set display interface clock parents
Roi Dayan (2):
net/mlx5e: Fix inner tirs handling net/mlx5: Annotate mutex destroy for root ns
Roman Mashak (1):
net sched: fix reporting the first-time use timestamp
Russell King (4):
net: mvpp2: fix RX hashing for non-10G ports
ARM: uaccess: consolidate uaccess asm to asm/uaccess-asm.h
ARM: uaccess: integrate uaccess_save and uaccess_restore
ARM: uaccess: fix DACR mismatch with nested exceptions
Sabrina Dubroca (1):
net: don't return invalid table id error when we fall back to PF_UNSPEC
Shay Drory (1):
net/mlx5: Fix error flow in case of function_setup failure
Simon Ser (1):
drm/amd/display: drop cursor position check in atomic test
Stephen Warren (1):
gpio: tegra: mask GPIO IRQs during IRQ shutdown
Stephen Worley (1):
net: nlmsg_cancel() if put fails for nhmsg
Steve French (1):
cifs: Fix null pointer check in cifs_read
Takashi Iwai (3):
gpio: exar: Fix bad handling for ida_simple_get error path
ALSA: hda/realtek - Add a model for Thinkpad T570 without DAC workaround
ALSA: usb-audio: Quirks for Gigabyte TRX40 Aorus Master onboard audio
Tariq Toukan (1):
net/mlx5e: kTLS, Destroy key object after destroying the TIS
Tero Kristo (1):
clk: ti: am33xx: fix RTC clock parent
Tiezhu Yang (2):
gpio: pxa: Fix return value of pxa_gpio_probe()
gpio: bcm-kona: Fix return value of bcm_kona_gpio_probe()
Vadim Fedorenko (3):
net: ipip: fix wrong address family in init error path net/tls: fix encryption error checking net/tls: free record only on encryption error
Valentine Fatiev (1):
IB/ipoib: Fix double free of skb in case of multicast traffic in CM mode
Vinay Kumar Yadav (1):
net/tls: fix race condition causing kernel panic
Vincent Stehlé (1):
ARM: dts: bcm2835-rpi-zero-w: Fix led polarity
Vinod Koul (1):
clk: qcom: gcc: Fix parent for gpll0_out_even
Vladimir Oltean (2):
dpaa_eth: fix usage as DSA master, try 3
net: dsa: declare lockless TX feature for slave ports
Wei Yongjun (1):
Input: synaptics-rmi4 - fix error return code in rmi_driver_probe()
Xin Long (8):
xfrm: allow to accept packets with ipv6 NEXTHDR_HOP in xfrm_input
xfrm: do pskb_pull properly in __xfrm_transport_prep
xfrm: remove the xfrm_state_put call becofe going to out_reset
xfrm: call xfrm_output_gso when inner_protocol is set in xfrm_output
xfrm: fix a warning in xfrm_policy_insert_list
xfrm: fix a NULL-ptr deref in xfrm_local_error
ip_vti: receive ipip packet by calling ip_tunnel_rcv
esp6: get the right proto for transport mode in esp6_gso_encap
Yuqi Jin (1):
net: revert "net: get rid of an signed integer overflow in ip_idents_reserve()"
Łukasz Patron (1):
Input: xpad - add custom init packet for Xbox One S controllers
Łukasz Stelmach (1):
ARM: 8970/1: decompressor: increase tag size
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 43 +SUBLEVEL = 44 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/arm/boot/compressed/vmlinux.lds.S +1 -1
@@ -43,7 +43,7 @@ SECTIONS } .table : ALIGN(4) { _table_start = .; - LONG(ZIMAGE_MAGIC(2)) + LONG(ZIMAGE_MAGIC(4)) LONG(ZIMAGE_MAGIC(0x5a534c4b)) LONG(ZIMAGE_MAGIC(__piggy_size_addr - _start)) LONG(ZIMAGE_MAGIC(_kernel_bss_size))
arch/arm/boot/dts/bcm-hr2.dtsi +3 -3
@@ -75,7 +75,7 @@ timer@20200 { compatible = "arm,cortex-a9-global-timer"; reg = <0x20200 0x100>; - interrupts = <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>; + interrupts = <GIC_PPI 11 IRQ_TYPE_EDGE_RISING>; clocks = <&periph_clk>; };
@@ -83,7 +83,7 @@ compatible = "arm,cortex-a9-twd-timer"; reg = <0x20600 0x20>; interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(1) | - IRQ_TYPE_LEVEL_HIGH)>; + IRQ_TYPE_EDGE_RISING)>; clocks = <&periph_clk>; };
@@ -91,7 +91,7 @@ compatible = "arm,cortex-a9-twd-wdt"; reg = <0x20620 0x20>; interrupts = <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(1) | - IRQ_TYPE_LEVEL_HIGH)>; + IRQ_TYPE_EDGE_RISING)>; clocks = <&periph_clk>; };
arch/arm/boot/dts/bcm2835-rpi-zero-w.dts +1 -1
@@ -24,7 +24,7 @@ leds { act { - gpios = <&gpio 47 GPIO_ACTIVE_HIGH>; + gpios = <&gpio 47 GPIO_ACTIVE_LOW>; }; };
arch/arm/boot/dts/imx6q-b450v3.dts +0 -7
@@ -65,13 +65,6 @@ }; }; -&clks { - assigned-clocks = <&clks IMX6QDL_CLK_LDB_DI0_SEL>, - <&clks IMX6QDL_CLK_LDB_DI1_SEL>; - assigned-clock-parents = <&clks IMX6QDL_CLK_PLL3_USB_OTG>, - <&clks IMX6QDL_CLK_PLL3_USB_OTG>; -}; - &ldb { status = "okay";
arch/arm/boot/dts/imx6q-b650v3.dts +0 -7
@@ -65,13 +65,6 @@ }; }; -&clks { - assigned-clocks = <&clks IMX6QDL_CLK_LDB_DI0_SEL>, - <&clks IMX6QDL_CLK_LDB_DI1_SEL>; - assigned-clock-parents = <&clks IMX6QDL_CLK_PLL3_USB_OTG>, - <&clks IMX6QDL_CLK_PLL3_USB_OTG>; -}; - &ldb { status = "okay";
arch/arm/boot/dts/imx6q-b850v3.dts +0 -11
@@ -53,17 +53,6 @@ }; }; -&clks { - assigned-clocks = <&clks IMX6QDL_CLK_LDB_DI0_SEL>, - <&clks IMX6QDL_CLK_LDB_DI1_SEL>, - <&clks IMX6QDL_CLK_IPU1_DI0_PRE_SEL>, - <&clks IMX6QDL_CLK_IPU2_DI0_PRE_SEL>; - assigned-clock-parents = <&clks IMX6QDL_CLK_PLL5_VIDEO_DIV>, - <&clks IMX6QDL_CLK_PLL5_VIDEO_DIV>, - <&clks IMX6QDL_CLK_PLL2_PFD2_396M>, - <&clks IMX6QDL_CLK_PLL2_PFD2_396M>; -}; - &ldb { fsl,dual-channel; status = "okay";
arch/arm/boot/dts/imx6q-bx50v3.dtsi +15 -0
@@ -377,3 +377,18 @@ #interrupt-cells = <1>; }; }; + +&clks { + assigned-clocks = <&clks IMX6QDL_CLK_LDB_DI0_SEL>, + <&clks IMX6QDL_CLK_LDB_DI1_SEL>, + <&clks IMX6QDL_CLK_IPU1_DI0_PRE_SEL>, + <&clks IMX6QDL_CLK_IPU1_DI1_PRE_SEL>, + <&clks IMX6QDL_CLK_IPU2_DI0_PRE_SEL>, + <&clks IMX6QDL_CLK_IPU2_DI1_PRE_SEL>; + assigned-clock-parents = <&clks IMX6QDL_CLK_PLL5_VIDEO_DIV>, + <&clks IMX6QDL_CLK_PLL5_VIDEO_DIV>, + <&clks IMX6QDL_CLK_PLL2_PFD0_352M>, + <&clks IMX6QDL_CLK_PLL2_PFD0_352M>, + <&clks IMX6QDL_CLK_PLL2_PFD0_352M>, + <&clks IMX6QDL_CLK_PLL2_PFD0_352M>; +};
arch/arm/boot/dts/rk3036.dtsi +1 -1
@@ -128,7 +128,7 @@ assigned-clocks = <&cru SCLK_GPU>; assigned-clock-rates = <100000000>; clocks = <&cru SCLK_GPU>, <&cru SCLK_GPU>; - clock-names = "core", "bus"; + clock-names = "bus", "core"; resets = <&cru SRST_GPU>; status = "disabled"; };
arch/arm/boot/dts/rk3228-evb.dts +1 -1
@@ -46,7 +46,7 @@ #address-cells = <1>; #size-cells = <0>; - phy: phy@0 { + phy: ethernet-phy@0 { compatible = "ethernet-phy-id1234.d400", "ethernet-phy-ieee802.3-c22"; reg = <0>; clocks = <&cru SCLK_MAC_PHY>;
arch/arm/boot/dts/rk3229-xms6.dts +1 -1
@@ -150,7 +150,7 @@ #address-cells = <1>; #size-cells = <0>; - phy: phy@0 { + phy: ethernet-phy@0 { compatible = "ethernet-phy-id1234.d400", "ethernet-phy-ieee802.3-c22"; reg = <0>;
arch/arm/boot/dts/rk322x.dtsi +3 -3
@@ -561,7 +561,7 @@ "pp1", "ppmmu1"; clocks = <&cru ACLK_GPU>, <&cru ACLK_GPU>; - clock-names = "core", "bus"; + clock-names = "bus", "core"; resets = <&cru SRST_GPU_A>; status = "disabled"; };
@@ -1033,7 +1033,7 @@ }; }; - spi-0 { + spi0 { spi0_clk: spi0-clk { rockchip,pins = <0 RK_PB1 2 &pcfg_pull_up>; };
@@ -1051,7 +1051,7 @@ }; }; - spi-1 { + spi1 { spi1_clk: spi1-clk { rockchip,pins = <0 RK_PC7 2 &pcfg_pull_up>; };
arch/arm/boot/dts/rk3xxx.dtsi +1 -1
@@ -84,7 +84,7 @@ compatible = "arm,mali-400"; reg = <0x10090000 0x10000>; clocks = <&cru ACLK_GPU>, <&cru ACLK_GPU>; - clock-names = "core", "bus"; + clock-names = "bus", "core"; assigned-clocks = <&cru ACLK_GPU>; assigned-clock-rates = <100000000>; resets = <&cru SRST_GPU>;
arch/arm/include/asm/assembler.h +1 -74
91 lines not on this page · raw message
arch/arm/include/asm/uaccess-asm.h new file +117 -0
117 lines not on this page · raw message
arch/arm/kernel/entry-armv.S +2 -9
@@ -27,6 +27,7 @@ #include <asm/unistd.h> #include <asm/tls.h> #include <asm/system_info.h> +#include <asm/uaccess-asm.h> #include "entry-header.S" #include <asm/entry-macro-multi.S>
@@ -179,15 +180,7 @@ ENDPROC(__und_invalid) stmia r7, {r2 - r6} get_thread_info tsk - ldr r0, [tsk, #TI_ADDR_LIMIT] - mov r1, #TASK_SIZE - str r1, [tsk, #TI_ADDR_LIMIT] - str r0, [sp, #SVC_ADDR_LIMIT] - - uaccess_save r0 - .if \uaccess - uaccess_disable r0 - .endif + uaccess_entry tsk, r0, r1, r2, \uaccess .if \trace #ifdef CONFIG_TRACE_IRQFLAGS
arch/arm/kernel/entry-header.S +3 -6
@@ -6,6 +6,7 @@ #include <asm/asm-offsets.h> #include <asm/errno.h> #include <asm/thread_info.h> +#include <asm/uaccess-asm.h> #include <asm/v7m.h> @ Bad Abort numbers
@@ -217,9 +218,7 @@ blne trace_hardirqs_off #endif .endif - ldr r1, [sp, #SVC_ADDR_LIMIT] - uaccess_restore - str r1, [tsk, #TI_ADDR_LIMIT] + uaccess_exit tsk, r0, r1 #ifndef CONFIG_THUMB2_KERNEL @ ARM mode SVC restore
@@ -263,9 +262,7 @@ @ on the stack remains correct). @ .macro svc_exit_via_fiq - ldr r1, [sp, #SVC_ADDR_LIMIT] - uaccess_restore - str r1, [tsk, #TI_ADDR_LIMIT] + uaccess_exit tsk, r0, r1 #ifndef CONFIG_THUMB2_KERNEL @ ARM mode restore mov r0, sp
arch/arm64/boot/dts/mediatek/mt8173.dtsi +2 -2
@@ -1397,8 +1397,8 @@ "venc_lt_sel"; assigned-clocks = <&topckgen CLK_TOP_VENC_SEL>, <&topckgen CLK_TOP_VENC_LT_SEL>; - assigned-clock-parents = <&topckgen CLK_TOP_VENCPLL_D2>, - <&topckgen CLK_TOP_UNIVPLL1_D2>; + assigned-clock-parents = <&topckgen CLK_TOP_VCODECPLL>, + <&topckgen CLK_TOP_VCODECPLL_370P5>; }; vencltsys: clock-controller@19000000 {
arch/arm64/boot/dts/rockchip/rk3328-evb.dts +1 -1
@@ -86,7 +86,7 @@ assigned-clock-rate = <50000000>; assigned-clocks = <&cru SCLK_MAC2PHY>; assigned-clock-parents = <&cru SCLK_MAC2PHY_SRC>; - + status = "okay"; }; &i2c1 {
arch/arm64/boot/dts/rockchip/rk3399.dtsi +4 -4
@@ -1881,10 +1881,10 @@ gpu: gpu@ff9a0000 { compatible = "rockchip,rk3399-mali", "arm,mali-t860"; reg = <0x0 0xff9a0000 0x0 0x10000>; - interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH 0>, - <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH 0>, - <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH 0>; - interrupt-names = "gpu", "job", "mmu"; + interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH 0>, + <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH 0>, + <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH 0>; + interrupt-names = "job", "mmu", "gpu"; clocks = <&cru ACLK_GPU>; power-domains = <&power RK3399_PD_GPU>; status = "disabled";
arch/csky/abiv1/inc/abi/entry.h +2 -2
@@ -167,8 +167,8 @@* BA Reserved C D V */ cprcr r6, cpcr30 - lsri r6, 28 - lsli r6, 28 + lsri r6, 29 + lsli r6, 29 addi r6, 0xe cpwcr r6, cpcr30
arch/csky/abiv2/inc/abi/entry.h +2 -2
@@ -225,8 +225,8 @@*/ mfcr r6, cr<30, 15> /* Get MSA0 */ 2: - lsri r6, 28 - lsli r6, 28 + lsri r6, 29 + lsli r6, 29 addi r6, 0x1ce mtcr r6, cr<30, 15> /* Set MSA0 */
arch/csky/include/asm/uaccess.h +26 -23
86 lines not on this page · raw message
arch/csky/kernel/entry.S +0 -2
@@ -318,8 +318,6 @@ ENTRY(__switch_to) mfcr a2, psr /* Save PSR value */ stw a2, (a3, THREAD_SR) /* Save PSR in task struct */ - bclri a2, 6 /* Disable interrupts */ - mtcr a2, psr SAVE_SWITCH_STACK
arch/csky/kernel/perf_callchain.c +7 -2
@@ -12,12 +12,17 @@ struct stackframe {static int unwind_frame_kernel (struct stackframe *frame) { -if (kstack_end ((void *)frame->fp)) +unsigned long low = (unsigned long )task_stack_page (current); +unsigned long high = low +THREAD_SIZE ; + +if (unlikely (frame->fp < low || frame->fp > high))return -EPERM ; -if (frame->fp &0x3 || frame->fp <TASK_SIZE ) + +if (kstack_end ((void *)frame->fp) || frame->fp &0x3 )return -EPERM ; *frame = *(struct stackframe *)frame->fp; +if (__kernel_text_address (frame->lr)) {int graph =0 ;
arch/csky/lib/usercopy.c +2 -6
@@ -7,10 +7,7 @@unsigned long raw_copy_from_user (void *to,const void *from,unsigned long n) { -if (access_ok (from, n)) -__copy_user_zeroing (to, from, n); -else -memset (to,0 , n); +___copy_from_user (to, from, n);return n; }EXPORT_SYMBOL (raw_copy_from_user);
@@ -18,8 +15,7 @@ EXPORT_SYMBOL(raw_copy_from_user);unsigned long raw_copy_to_user (void *to,const void *from,unsigned long n) { -if (access_ok (to, n)) -__copy_user (to, from, n); +___copy_to_user (to, from, n);return n; }EXPORT_SYMBOL (raw_copy_to_user);
arch/parisc/mm/init.c +1 -1
@@ -588,7 +588,7 @@ void __init mem_init(void) > BITS_PER_LONG); high_memory =__va ((max_pfn <<PAGE_SHIFT )); -set_max_mapnr (page_to_pfn (virt_to_page (high_memory -1 )) +1 ); +set_max_mapnr (max_low_pfn);memblock_free_all ();#ifdef CONFIG_PA11
arch/riscv/kernel/stacktrace.c +1 -1
@@ -63,7 +63,7 @@ void notrace walk_stackframe(struct task_struct *task, struct pt_regs *regs,#else /* !CONFIG_FRAME_POINTER */ -static void notrace walk_stackframe(struct task_struct *task, +void notrace walk_stackframe(struct task_struct *task,struct pt_regs *regs,bool (*fn)(unsigned long ,void *),void *arg) {unsigned long sp, pc;
arch/x86/include/asm/dma.h +1 -1
@@ -74,7 +74,7 @@#define MAX_DMA_PFN ((16UL * 1024 * 1024) >> PAGE_SHIFT)/* 4GB broken PCI/AGP hardware bus master zone */ -#define MAX_DMA32_PFN ((4UL * 1024 * 1024 * 1024) >> PAGE_SHIFT) +#define MAX_DMA32_PFN (1UL << (32 - PAGE_SHIFT))#ifdef CONFIG_X86_32 /* The maximum address that we can perform a DMA transfer to on this platform */
arch/x86/include/uapi/asm/unistd.h +9 -2
@@ -2,8 +2,15 @@#ifndef _UAPI_ASM_X86_UNISTD_H#define _UAPI_ASM_X86_UNISTD_H -/* x32 syscall flag bit */ -#define __X32_SYSCALL_BIT 0x40000000UL +/* +* x32 syscall flag bit. Some user programs expect syscall NR macros +* and __X32_SYSCALL_BIT to have type int, even though syscall numbers +* are, for practical purposes, unsigned long. +* +* Fortunately, expressions like (nr & ~__X32_SYSCALL_BIT) do the right +* thing regardless. +*/ +#define __X32_SYSCALL_BIT 0x40000000#ifndef __KERNEL__# ifdef __i386__
arch/x86/kernel/fpu/xstate.c +48 -38
120 lines not on this page · raw message
block/blk-core.c +4 -7
@@ -886,14 +886,11 @@ generic_make_request_checks(struct bio *bio) }/* -* Non-mq queues do not honor REQ_NOWAIT, so complete a bio -* with BLK_STS_AGAIN status in order to catch -EAGAIN and -* to give a chance to the caller to repeat request gracefully. +* For a REQ_NOWAIT based request, return -EOPNOTSUPP +* if queue is not a request based queue. */ -if ((bio->bi_opf &REQ_NOWAIT ) && !queue_is_mq (q)) { - status =BLK_STS_AGAIN ; - goto end_io; - } +if ((bio->bi_opf &REQ_NOWAIT ) && !queue_is_mq (q)) + goto not_supported;if (should_fail_bio (bio)) goto end_io;
drivers/clk/qcom/gcc-sm8150.c +1 -2
@@ -75,8 +75,7 @@ static struct clk_alpha_pll_postdiv gpll0_out_even = { .clkr.hw.init = &(struct clk_init_data){ .name ="gpll0_out_even" , .parent_data = &(const struct clk_parent_data ){ - .fw_name ="bi_tcxo" , - .name ="bi_tcxo" , + .hw = &gpll0.clkr.hw, }, .num_parents =1 , .ops = &clk_trion_pll_postdiv_ops,
drivers/clk/ti/clk-33xx.c +1 -1
@@ -212,7 +212,7 @@ static const struct omap_clkctrl_reg_data am3_mpu_clkctrl_regs[] __initconst = { };static const struct omap_clkctrl_reg_data am3_l4_rtc_clkctrl_regs[]__initconst = { - {AM3_L4_RTC_RTC_CLKCTRL ,NULL ,CLKF_SW_SUP ,"clk_32768_ck" }, + {AM3_L4_RTC_RTC_CLKCTRL ,NULL ,CLKF_SW_SUP ,"clk-24mhz-clkctrl:0000:0" }, {0 }, };
drivers/crypto/chelsio/chtls/chtls_io.c +1 -1
@@ -682,7 +682,7 @@ int chtls_push_frames(struct chtls_sock *csk, int comp)make_tx_data_wr (sk, skb, immdlen, len, credits_needed, completion); tp->snd_nxt += len; - tp->lsndtime =tcp_time_stamp (tp); + tp->lsndtime = tcp_jiffies32;if (completion)ULP_SKB_CB (skb)->flags &= ~ULPCB_FLAG_NEED_HDR ; }else {
drivers/gpio/gpio-bcm-kona.c +1 -1
@@ -619,7 +619,7 @@ static int bcm_kona_gpio_probe(struct platform_device *pdev) kona_gpio->reg_base =devm_platform_ioremap_resource (pdev,0 );if (IS_ERR (kona_gpio->reg_base)) { - ret = -ENXIO ; + ret =PTR_ERR (kona_gpio->reg_base); goto err_irq_domain; }
drivers/gpio/gpio-exar.c +5 -2
@@ -145,8 +145,10 @@ static int gpio_exar_probe(struct platform_device *pdev)mutex_init (&exar_gpio->lock); index =ida_simple_get (&ida_index,0 ,0 ,GFP_KERNEL ); -if (index <0 ) - goto err_destroy; +if (index <0 ) { + ret = index; + goto err_mutex_destroy; + }sprintf (exar_gpio->name,"exar_gpio%d" , index); exar_gpio->gpio_chip.label = exar_gpio->name;
@@ -173,6 +175,7 @@ static int gpio_exar_probe(struct platform_device *pdev) err_destroy:ida_simple_remove (&ida_index, index); +err_mutex_destroy:mutex_destroy (&exar_gpio->lock);return ret; }
drivers/gpio/gpio-pxa.c +2 -2
@@ -663,8 +663,8 @@ static int pxa_gpio_probe(struct platform_device *pdev) pchip->irq1 = irq1; gpio_reg_base =devm_platform_ioremap_resource (pdev,0 ); -if (!gpio_reg_base) -return -EINVAL ; +if (IS_ERR (gpio_reg_base)) +return PTR_ERR (gpio_reg_base); clk =clk_get (&pdev->dev,NULL );if (IS_ERR (clk)) {
drivers/gpio/gpio-tegra.c +1 -0
@@ -365,6 +365,7 @@ static void tegra_gpio_irq_shutdown(struct irq_data *d)struct tegra_gpio_info *tgi = bank->tgi;unsigned int gpio = d->hwirq; +tegra_gpio_irq_mask (d);gpiochip_unlock_as_irq (&tgi->gc, gpio); }
drivers/gpio/gpiolib.c +9 -2
@@ -3894,7 +3894,9 @@ int gpiochip_lock_as_irq(struct gpio_chip *chip, unsigned int offset) } } -if (test_bit (FLAG_IS_OUT , &desc->flags)) { +/* To be valid for IRQ the line needs to be input or open drain */ +if (test_bit (FLAG_IS_OUT , &desc->flags) && + !test_bit (FLAG_OPEN_DRAIN , &desc->flags)) {chip_err (chip,"%s: tried to flag a GPIO set as output for IRQ\n" , __func__);
@@ -3957,7 +3959,12 @@ void gpiochip_enable_irq(struct gpio_chip *chip, unsigned int offset)if (!IS_ERR (desc) && !WARN_ON (!test_bit (FLAG_USED_AS_IRQ , &desc->flags))) { -WARN_ON (test_bit (FLAG_IS_OUT , &desc->flags)); +/* +* We must not be output when using IRQ UNLESS we are +* open drain. +*/ +WARN_ON (test_bit (FLAG_IS_OUT , &desc->flags) && + !test_bit (FLAG_OPEN_DRAIN , &desc->flags));set_bit (FLAG_IRQ_IS_ENABLED , &desc->flags); } }
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +3 -2
@@ -1288,7 +1288,7 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu( }/* Free the BO*/ -amdgpu_bo_unref (&mem->bo); +drm_gem_object_put_unlocked (&mem->bo->tbo.base);mutex_destroy (&mem->lock);kfree (mem);
@@ -1630,7 +1630,8 @@ int amdgpu_amdkfd_gpuvm_import_dmabuf(struct kgd_dev *kgd,AMDGPU_VM_PAGE_READABLE |AMDGPU_VM_PAGE_WRITEABLE |AMDGPU_VM_PAGE_EXECUTABLE |AMDGPU_VM_MTYPE_NC ; - (*mem)->bo =amdgpu_bo_ref (bo); +drm_gem_object_get (&bo->tbo.base); + (*mem)->bo = bo; (*mem)->va = va; (*mem)->domain = (bo->preferred_domains &AMDGPU_GEM_DOMAIN_VRAM ) ?AMDGPU_GEM_DOMAIN_VRAM :AMDGPU_GEM_DOMAIN_GTT ;
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c +1 -5
@@ -4290,11 +4290,7 @@ static int gfx_v10_0_set_powergating_state(void *handle,switch (adev->asic_type) {case CHIP_NAVI10 :case CHIP_NAVI14 : -if (!enable) { -amdgpu_gfx_off_ctrl (adev, false); -cancel_delayed_work_sync (&adev->gfx.gfx_off_delay_work); - }else -amdgpu_gfx_off_ctrl (adev, true); +amdgpu_gfx_off_ctrl (adev, enable);break ;default :break ;
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +3 -9
@@ -4839,10 +4839,9 @@ static int gfx_v9_0_set_powergating_state(void *handle,switch (adev->asic_type) {case CHIP_RAVEN :case CHIP_RENOIR : -if (!enable) { +if (!enable)amdgpu_gfx_off_ctrl (adev, false); -cancel_delayed_work_sync (&adev->gfx.gfx_off_delay_work); - } +if (adev->pg_flags &AMD_PG_SUPPORT_RLC_SMU_HS ) {gfx_v9_0_enable_sck_slow_down_on_power_up (adev, true);gfx_v9_0_enable_sck_slow_down_on_power_down (adev, true);
@@ -4868,12 +4867,7 @@ static int gfx_v9_0_set_powergating_state(void *handle,amdgpu_gfx_off_ctrl (adev, true);break ;case CHIP_VEGA12 : -if (!enable) { -amdgpu_gfx_off_ctrl (adev, false); -cancel_delayed_work_sync (&adev->gfx.gfx_off_delay_work); - }else { -amdgpu_gfx_off_ctrl (adev, true); - } +amdgpu_gfx_off_ctrl (adev, enable);break ;default :break ;
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +0 -7
@@ -6951,13 +6951,6 @@ static int dm_update_plane_state(struct dc *dc,return -EINVAL ; } -if (new_plane_state->crtc_x <= -new_acrtc->max_cursor_width || - new_plane_state->crtc_y <= -new_acrtc->max_cursor_height) { -DRM_DEBUG_ATOMIC ("Bad cursor position %d, %d\n" , - new_plane_state->crtc_x, new_plane_state->crtc_y); -return -EINVAL ; - } -return 0 ; }
drivers/gpu/drm/amd/powerplay/amd_powerplay.c +3 -3
@@ -320,12 +320,12 @@ static void pp_dpm_en_umd_pstate(struct pp_hwmgr *hwmgr,if (*level & profile_mode_mask) { hwmgr->saved_dpm_level = hwmgr->dpm_level; hwmgr->en_umd_pstate = true; -amdgpu_device_ip_set_clockgating_state (hwmgr->adev, -AMD_IP_BLOCK_TYPE_GFX , -AMD_CG_STATE_UNGATE );amdgpu_device_ip_set_powergating_state (hwmgr->adev,AMD_IP_BLOCK_TYPE_GFX ,AMD_PG_STATE_UNGATE ); +amdgpu_device_ip_set_clockgating_state (hwmgr->adev, +AMD_IP_BLOCK_TYPE_GFX , +AMD_CG_STATE_UNGATE ); } }else {/* exit umd pstate, restore level, enable gfx cg*/
drivers/gpu/drm/amd/powerplay/amdgpu_smu.c +3 -3
@@ -1541,12 +1541,12 @@ static int smu_enable_umd_pstate(void *handle,if (*level & profile_mode_mask) { smu_dpm_ctx->saved_dpm_level = smu_dpm_ctx->dpm_level; smu_dpm_ctx->enable_umd_pstate = true; -amdgpu_device_ip_set_clockgating_state (smu->adev, -AMD_IP_BLOCK_TYPE_GFX , -AMD_CG_STATE_UNGATE );amdgpu_device_ip_set_powergating_state (smu->adev,AMD_IP_BLOCK_TYPE_GFX ,AMD_PG_STATE_UNGATE ); +amdgpu_device_ip_set_clockgating_state (smu->adev, +AMD_IP_BLOCK_TYPE_GFX , +AMD_CG_STATE_UNGATE ); } }else {/* exit umd pstate, restore level, enable gfx cg*/
drivers/gpu/drm/ingenic/ingenic-drm.c +1 -1
@@ -467,7 +467,7 @@ static int ingenic_drm_encoder_atomic_check(struct drm_encoder *encoder,static irqreturn_t ingenic_drm_irq_handler (int irq,void *arg) { -struct ingenic_drm *priv = arg; +struct ingenic_drm *priv =drm_device_get_priv (arg);unsigned int state;regmap_read (priv->map,JZ_REG_LCD_STATE , &state);
drivers/hwmon/nct7904.c +3 -1
@@ -356,6 +356,7 @@ static int nct7904_read_temp(struct device *dev, u32 attr, int channel,struct nct7904_data *data =dev_get_drvdata (dev);int ret, temp;unsigned int reg1, reg2, reg3; +s8 temps;switch (attr) {case hwmon_temp_input:
@@ -461,7 +462,8 @@ static int nct7904_read_temp(struct device *dev, u32 attr, int channel,if (ret <0 )return ret; - *val = ret *1000 ; + temps = ret; + *val = temps *1000 ;return 0 ; }
drivers/infiniband/core/rdma_core.c +13 -7
@@ -160,9 +160,9 @@ static int uverbs_destroy_uobject(struct ib_uobject *uobj, uobj->context =NULL ;/* -* For DESTROY the usecnt is held write locked, the caller is expected -* to put it unlock and put the object when done with it. Only DESTROY -* can remove the IDR handle. +* For DESTROY the usecnt is not changed, the caller is expected to +* manage it via uobj_put_destroy(). Only DESTROY can remove the IDR +* handle. */ if (reason !=RDMA_REMOVE_DESTROY )atomic_set (&uobj->usecnt,0 );
@@ -194,7 +194,7 @@ static int uverbs_destroy_uobject(struct ib_uobject *uobj,/* * This calls uverbs_destroy_uobject() using the RDMA_REMOVE_DESTROY * sequence. It should only be used from command callbacks. On success the -* caller must pair this with rdma_lookup_put_uobject(LOOKUP_WRITE). This +* caller must pair this with uobj_put_destroy(). This * version requires the caller to have already obtained an * LOOKUP_DESTROY uobject kref. */
@@ -205,6 +205,13 @@ int uobj_destroy(struct ib_uobject *uobj, struct uverbs_attr_bundle *attrs)down_read (&ufile->hw_destroy_rwsem); +/* +* Once the uobject is destroyed by RDMA_REMOVE_DESTROY then it is left +* write locked as the callers put it back with UVERBS_LOOKUP_DESTROY. +* This is because any other concurrent thread can still see the object +* in the xarray due to RCU. Leaving it locked ensures nothing else will +* touch it. +*/ ret =uverbs_try_lock_object (uobj,UVERBS_LOOKUP_WRITE );if (ret) goto out_unlock;
@@ -223,7 +230,7 @@ int uobj_destroy(struct ib_uobject *uobj, struct uverbs_attr_bundle *attrs)/* * uobj_get_destroy destroys the HW object and returns a handle to the uobj * with a NULL object pointer. The caller must pair this with -* uverbs_put_destroy. +* uobj_put_destroy(). */ struct ib_uobject *__uobj_get_destroy (const struct uverbs_api_object *obj,u32 id,struct uverbs_attr_bundle *attrs)
@@ -257,8 +264,7 @@ int __uobj_perform_destroy(const struct uverbs_api_object *obj, u32 id, uobj =__uobj_get_destroy (obj, id, attrs);if (IS_ERR (uobj))return PTR_ERR (uobj); - -rdma_lookup_put_uobject (uobj,UVERBS_LOOKUP_WRITE ); +uobj_put_destroy (uobj);return 0 ; }
drivers/infiniband/hw/i40iw/i40iw_cm.c +0 -8
@@ -1987,7 +1987,6 @@ static int i40iw_addr_resolve_neigh(struct i40iw_device *iwdev,struct rtable *rt;struct neighbour *neigh;int rc = arpindex; -struct net_device *netdev = iwdev->netdev;__be32 dst_ipaddr =htonl (dst_ip);__be32 src_ipaddr =htonl (src_ip);
@@ -1997,9 +1996,6 @@ static int i40iw_addr_resolve_neigh(struct i40iw_device *iwdev,return rc; } -if (netif_is_bond_slave (netdev)) - netdev =netdev_master_upper_dev_get (netdev); - neigh =dst_neigh_lookup (&rt->dst, &dst_ipaddr);rcu_read_lock ();
@@ -2065,7 +2061,6 @@ static int i40iw_addr_resolve_neigh_ipv6(struct i40iw_device *iwdev, {struct neighbour *neigh;int rc = arpindex; -struct net_device *netdev = iwdev->netdev;struct dst_entry *dst;struct sockaddr_in6 dst_addr;struct sockaddr_in6 src_addr;
@@ -2086,9 +2081,6 @@ static int i40iw_addr_resolve_neigh_ipv6(struct i40iw_device *iwdev,return rc; } -if (netif_is_bond_slave (netdev)) - netdev =netdev_master_upper_dev_get (netdev); - neigh =dst_neigh_lookup (dst, dst_addr.sin6_addr.in6_u.u6_addr32);rcu_read_lock ();
drivers/infiniband/hw/qib/qib_sysfs.c +5 -4
@@ -760,7 +760,7 @@ int qib_create_port_files(struct ib_device *ibdev, u8 port_num,qib_dev_err (dd,"Skipping linkcontrol sysfs info, (err %d) port %u\n" , ret, port_num); - goto bail; + goto bail_link; }kobject_uevent (&ppd->pport_kobj,KOBJ_ADD );
@@ -770,7 +770,7 @@ int qib_create_port_files(struct ib_device *ibdev, u8 port_num,qib_dev_err (dd,"Skipping sl2vl sysfs info, (err %d) port %u\n" , ret, port_num); - goto bail_link; + goto bail_sl; }kobject_uevent (&ppd->sl2vl_kobj,KOBJ_ADD );
@@ -780,7 +780,7 @@ int qib_create_port_files(struct ib_device *ibdev, u8 port_num,qib_dev_err (dd,"Skipping diag_counters sysfs info, (err %d) port %u\n" , ret, port_num); - goto bail_sl; + goto bail_diagc; }kobject_uevent (&ppd->diagc_kobj,KOBJ_ADD );
@@ -793,7 +793,7 @@ int qib_create_port_files(struct ib_device *ibdev, u8 port_num,qib_dev_err (dd,"Skipping Congestion Control sysfs info, (err %d) port %u\n" , ret, port_num); - goto bail_diagc; + goto bail_cc; }kobject_uevent (&ppd->pport_cc_kobj,KOBJ_ADD );
@@ -854,6 +854,7 @@ void qib_verbs_unregister_sysfs(struct qib_devdata *dd) &cc_table_bin_attr);kobject_put (&ppd->pport_cc_kobj); } +kobject_put (&ppd->diagc_kobj);kobject_put (&ppd->sl2vl_kobj);kobject_put (&ppd->pport_kobj); }
drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c +1 -1
@@ -829,7 +829,7 @@ static int pvrdma_pci_probe(struct pci_dev *pdev, !(pci_resource_flags(pdev, 1) & IORESOURCE_MEM)) {dev_err (&pdev->dev,"PCI BAR region not MMIO\n" ); ret = -ENOMEM ; - goto err_free_device; + goto err_disable_pdev; } ret =pci_request_regions (pdev,DRV_NAME );
drivers/infiniband/ulp/ipoib/ipoib.h +4 -0
@@ -377,8 +377,12 @@ struct ipoib_dev_priv {struct ipoib_rx_buf *rx_ring;struct ipoib_tx_buf *tx_ring; +/* cyclic ring variables for managing tx_ring, for UD only */ unsigned int tx_head;unsigned int tx_tail; +/* cyclic ring variables for counting overall outstanding send WRs */ +unsigned int global_tx_head; +unsigned int global_tx_tail;struct ib_sge tx_sge[MAX_SKB_FRAGS +1 ];struct ib_ud_wr tx_wr;struct ib_wc send_wc[MAX_SEND_CQE ];
drivers/infiniband/ulp/ipoib/ipoib_cm.c +9 -6
@@ -756,7 +756,8 @@ void ipoib_cm_send(struct net_device *dev, struct sk_buff *skb, struct ipoib_cm_return ; } -if ((priv->tx_head - priv->tx_tail) == ipoib_sendq_size -1 ) { +if ((priv->global_tx_head - priv->global_tx_tail) == + ipoib_sendq_size -1 ) {ipoib_dbg (priv,"TX ring 0x%x full, stopping kernel net queue\n" , tx->qp->qp_num);netif_stop_queue (dev);
@@ -786,7 +787,7 @@ void ipoib_cm_send(struct net_device *dev, struct sk_buff *skb, struct ipoib_cm_ }else {netif_trans_update (dev); ++tx->tx_head; - ++priv->tx_head; + ++priv->global_tx_head; } }
@@ -820,10 +821,11 @@ void ipoib_cm_handle_tx_wc(struct net_device *dev, struct ib_wc *wc)netif_tx_lock (dev); ++tx->tx_tail; - ++priv->tx_tail; + ++priv->global_tx_tail;if (unlikely (netif_queue_stopped (dev) && - (priv->tx_head - priv->tx_tail) <= ipoib_sendq_size >>1 && + ((priv->global_tx_head - priv->global_tx_tail) <= + ipoib_sendq_size >>1 ) &&test_bit (IPOIB_FLAG_ADMIN_UP , &priv->flags)))netif_wake_queue (dev);
@@ -1232,8 +1234,9 @@ static void ipoib_cm_tx_destroy(struct ipoib_cm_tx *p)dev_kfree_skb_any (tx_req->skb);netif_tx_lock_bh (p->dev); ++p->tx_tail; - ++priv->tx_tail; -if (unlikely (priv->tx_head - priv->tx_tail == ipoib_sendq_size >>1 ) && + ++priv->global_tx_tail; +if (unlikely ((priv->global_tx_head - priv->global_tx_tail) <= + ipoib_sendq_size >>1 ) &&netif_queue_stopped (p->dev) &&test_bit (IPOIB_FLAG_ADMIN_UP , &priv->flags))netif_wake_queue (p->dev);
drivers/infiniband/ulp/ipoib/ipoib_ib.c +7 -2
@@ -407,9 +407,11 @@ static void ipoib_ib_handle_tx_wc(struct net_device *dev, struct ib_wc *wc)dev_kfree_skb_any (tx_req->skb); ++priv->tx_tail; + ++priv->global_tx_tail;if (unlikely (netif_queue_stopped (dev) && - ((priv->tx_head - priv->tx_tail) <= ipoib_sendq_size >>1 ) && + ((priv->global_tx_head - priv->global_tx_tail) <= + ipoib_sendq_size >>1 ) &&test_bit (IPOIB_FLAG_ADMIN_UP , &priv->flags)))netif_wake_queue (dev);
@@ -634,7 +636,8 @@ int ipoib_send(struct net_device *dev, struct sk_buff *skb,else priv->tx_wr.wr.send_flags &= ~IB_SEND_IP_CSUM ;/* increase the tx_head after send success, but use it for queue state */ -if (priv->tx_head - priv->tx_tail == ipoib_sendq_size -1 ) { +if ((priv->global_tx_head - priv->global_tx_tail) == + ipoib_sendq_size -1 ) {ipoib_dbg (priv,"TX ring full, stopping kernel net queue\n" );netif_stop_queue (dev); }
@@ -662,6 +665,7 @@ int ipoib_send(struct net_device *dev, struct sk_buff *skb, rc = priv->tx_head; ++priv->tx_head; + ++priv->global_tx_head; }return rc; }
@@ -807,6 +811,7 @@ int ipoib_ib_dev_stop_default(struct net_device *dev)ipoib_dma_unmap_tx (priv, tx_req);dev_kfree_skb_any (tx_req->skb); ++priv->tx_tail; + ++priv->global_tx_tail; }for (i =0 ; i < ipoib_recvq_size; ++i) {
drivers/infiniband/ulp/ipoib/ipoib_main.c +6 -4
@@ -1188,9 +1188,11 @@ static void ipoib_timeout(struct net_device *dev)ipoib_warn (priv,"transmit timeout: latency %d msecs\n" ,jiffies_to_msecs (jiffies -dev_trans_start (dev))); -ipoib_warn (priv,"queue stopped %d, tx_head %u, tx_tail %u\n" , -netif_queue_stopped (dev), - priv->tx_head, priv->tx_tail); +ipoib_warn (priv, +"queue stopped %d, tx_head %u, tx_tail %u, global_tx_head %u, global_tx_tail %u\n" , +netif_queue_stopped (dev), priv->tx_head, priv->tx_tail, + priv->global_tx_head, priv->global_tx_tail); +/* XXX reset QP, etc. */ }
@@ -1705,7 +1707,7 @@ static int ipoib_dev_init_default(struct net_device *dev) goto out_rx_ring_cleanup; } -/* priv->tx_head, tx_tail & tx_outstanding are already 0 */ +/* priv->tx_head, tx_tail and global_tx_tail/head are already 0 */ if (ipoib_transport_dev_init (dev, priv->ca)) { pr_warn("%s: ipoib_transport_dev_init failed\n",
drivers/input/evdev.c +4 -15
@@ -326,20 +326,6 @@ static int evdev_fasync(int fd, struct file *file, int on)return fasync_helper (fd, file, on, &client->fasync); } -static int evdev_flush (struct file *file,fl_owner_t id) -{ -struct evdev_client *client = file->private_data; -struct evdev *evdev = client->evdev; - -mutex_lock (&evdev->mutex); - -if (evdev->exist && !client->revoked) -input_flush_device (&evdev->handle, file); - -mutex_unlock (&evdev->mutex); -return 0 ; -} -static void evdev_free (struct device *dev) { struct evdev *evdev = container_of(dev, struct evdev, dev);
@@ -453,6 +439,10 @@ static int evdev_release(struct inode *inode, struct file *file)unsigned int i;mutex_lock (&evdev->mutex); + +if (evdev->exist && !client->revoked) +input_flush_device (&evdev->handle, file); +evdev_ungrab (evdev, client);mutex_unlock (&evdev->mutex);
@@ -1310,7 +1300,6 @@ static const struct file_operations evdev_fops = { .compat_ioctl = evdev_ioctl_compat, #endif .fasync = evdev_fasync, - .flush = evdev_flush, .llseek = no_llseek, };
drivers/input/joystick/xpad.c +12 -0
@@ -458,6 +458,16 @@ static const u8 xboxone_fw2015_init[] = { 0x05, 0x20, 0x00, 0x01, 0x00 }; +/* +* This packet is required for Xbox One S (0x045e:0x02ea) +* and Xbox One Elite Series 2 (0x045e:0x0b00) pads to +* initialize the controller that was previously used in +* Bluetooth mode. +*/ +static const u8 xboxone_s_init[] = { +0x05 ,0x20 ,0x00 ,0x0f ,0x06 +}; +/* * This packet is required for the Titanfall 2 Xbox One pads * (0x0e6f:0x0165) to finish initialization and for Hori pads
@@ -516,6 +526,8 @@ static const struct xboxone_init_packet xboxone_init_packets[] = {XBOXONE_INIT_PKT (0x0e6f ,0x0165 , xboxone_hori_init),XBOXONE_INIT_PKT (0x0f0d ,0x0067 , xboxone_hori_init),XBOXONE_INIT_PKT (0x0000 ,0x0000 , xboxone_fw2015_init), +XBOXONE_INIT_PKT (0x045e ,0x02ea , xboxone_s_init), +XBOXONE_INIT_PKT (0x045e ,0x0b00 , xboxone_s_init),XBOXONE_INIT_PKT (0x0e6f ,0x0000 , xboxone_pdp_init1),XBOXONE_INIT_PKT (0x0e6f ,0x0000 , xboxone_pdp_init2), XBOXONE_INIT_PKT(0x24c6, 0x541a, xboxone_rumblebegin_init),
drivers/input/keyboard/dlink-dir685-touchkeys.c +1 -1
@@ -143,7 +143,7 @@ MODULE_DEVICE_TABLE(of, dir685_tk_of_match);static struct i2c_driver dir685_tk_i2c_driver = { .driver = { - .name ="dlin-dir685-touchkeys" , + .name ="dlink-dir685-touchkeys" , .of_match_table =of_match_ptr (dir685_tk_of_match), }, .probe = dir685_tk_probe,
drivers/input/rmi4/rmi_driver.c +3 -2
@@ -205,7 +205,7 @@ static irqreturn_t rmi_irq_fn(int irq, void *dev_id)if (count) {kfree (attn_data.data); - attn_data.data =NULL ; + drvdata->attn_data.data =NULL ; }if (!kfifo_is_empty (&drvdata->attn_fifo))
@@ -1210,7 +1210,8 @@ static int rmi_driver_probe(struct device *dev)if (data->input) {rmi_driver_set_input_name (rmi_dev, data->input);if (!rmi_dev->xport->input) { -if (input_register_device (data->input)) { + retval =input_register_device (data->input); +if (retval) {dev_err (dev,"%s: Failed to register input device.\n" , __func__); goto err_destroy_functions;
drivers/input/serio/i8042-x86ia64io.h +7 -0
@@ -662,6 +662,13 @@ static const struct dmi_system_id __initconst i8042_dmi_reset_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "P65xRP"), }, }, + { + /* Lenovo ThinkPad Twist S230u */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_NAME, "33474HU"), + }, + }, { } };
drivers/input/touchscreen/usbtouchscreen.c +1 -0
@@ -182,6 +182,7 @@ static const struct usb_device_id usbtouch_devices[] = {#endif #ifdef CONFIG_TOUCHSCREEN_USB_IRTOUCH + {USB_DEVICE(0x255e, 0x0001), .driver_info = DEVTYPE_IRTOUCH}, {USB_DEVICE(0x595a, 0x0001), .driver_info = DEVTYPE_IRTOUCH}, {USB_DEVICE(0x6615, 0x0001), .driver_info = DEVTYPE_IRTOUCH}, {USB_DEVICE(0x6615, 0x0012), .driver_info = DEVTYPE_IRTOUCH_HIRES},
drivers/iommu/iommu.c +1 -1
@@ -492,7 +492,7 @@ struct iommu_group *iommu_group_alloc(void) NULL, "%d", group->id);if (ret) {ida_simple_remove (&iommu_group_ida, group->id); -kfree (group); +kobject_put (&group->kobj);return ERR_PTR (ret); }
drivers/mmc/core/block.c +1 -1
@@ -2475,8 +2475,8 @@ static int mmc_rpmb_chrdev_release(struct inode *inode, struct file *filp)struct mmc_rpmb_data *rpmb =container_of (inode->i_cdev, struct mmc_rpmb_data, chrdev); -put_device (&rpmb->dev);mmc_blk_put (rpmb->md); +put_device (&rpmb->dev);return 0 ; }
drivers/net/bonding/bond_sysfs_slave.c +3 -1
@@ -149,8 +149,10 @@ int bond_sysfs_slave_add(struct slave *slave) err =kobject_init_and_add (&slave->kobj, &slave_ktype, &(slave->dev->dev.kobj),"bonding_slave" ); -if (err) +if (err) { +kobject_put (&slave->kobj);return err; + }for (a = slave_attrs; *a; ++a) { err =sysfs_create_file (&slave->kobj, &((*a)->attr));
drivers/net/dsa/mt7530.c +2 -7
@@ -639,11 +639,8 @@ mt7530_cpu_port_enable(struct mt7530_priv *priv,mt7530_write (priv,MT7530_PVC_P (port),PORT_SPEC_TAG ); -/* Disable auto learning on the cpu port */ -mt7530_set (priv,MT7530_PSC_P (port),SA_DIS ); - -/* Unknown unicast frame fordwarding to the cpu port */ -mt7530_set (priv,MT7530_MFC ,UNU_FFP (BIT (port))); +/* Unknown multicast frame forwarding to the cpu port */ +mt7530_rmw (priv,MT7530_MFC ,UNM_FFP_MASK ,UNM_FFP (BIT (port)));/* Set CPU port number */ if (priv->id ==ID_MT7621 )
@@ -1246,8 +1243,6 @@ mt7530_setup(struct dsa_switch *ds)/* Enable and reset MIB counters */ mt7530_mib_reset (ds); -mt7530_clear (priv,MT7530_MFC ,UNU_FFP_MASK ); -for (i =0 ; i <MT7530_NUM_PORTS ; i++) {/* Disable forwarding by default on all ports */ mt7530_rmw(priv, MT7530_PCR_P(i), PCR_MATRIX_MASK,
drivers/net/dsa/mt7530.h +1 -0
@@ -31,6 +31,7 @@ enum {#define MT7530_MFC 0x10#define BC_FFP (x) (((x) & 0xff) << 24)#define UNM_FFP (x) (((x) & 0xff) << 16) +#define UNM_FFP_MASK UNM_FFP(~0)#define UNU_FFP (x) (((x) & 0xff) << 8)#define UNU_FFP_MASK UNU_FFP(~0)#define CPU_EN BIT(7)
drivers/net/ethernet/broadcom/bnxt/bnxt.c +1 -1
@@ -9285,7 +9285,7 @@ static void __bnxt_close_nic(struct bnxt *bp, bool irq_re_init,bnxt_free_skbs (bp);/* Save ring stats before shutdown */ -if (bp->bnapi) +if (bp->bnapi && irq_re_init)bnxt_get_ring_stats (bp, &bp->net_stats_prev);if (irq_re_init) {bnxt_free_irq (bp);
drivers/net/ethernet/freescale/Kconfig +2 -0
@@ -77,6 +77,7 @@ config UCC_GETH depends on QUICC_ENGINE select FSL_PQ_MDIO select PHYLIB + select FIXED_PHY ---help--- This driver supports the Gigabit Ethernet mode of the QUICC Engine, which is available on some Freescale SOCs.
@@ -90,6 +91,7 @@ config GIANFAR depends on HAS_DMA select FSL_PQ_MDIO select PHYLIB + select FIXED_PHY select CRC32 ---help--- This driver supports the Gigabit TSEC on the MPC83xx, MPC85xx,
drivers/net/ethernet/freescale/dpaa/Kconfig +1 -0
@@ -3,6 +3,7 @@ menuconfig FSL_DPAA_ETH tristate "DPAA Ethernet" depends on FSL_DPAA && FSL_FMAN select PHYLIB + select FIXED_PHY select FSL_FMAN_MAC ---help--- Data Path Acceleration Architecture Ethernet driver,
drivers/net/ethernet/freescale/dpaa/dpaa_eth.c +1 -1
@@ -2802,7 +2802,7 @@ static int dpaa_eth_probe(struct platform_device *pdev) }/* Do this here, so we can be verbose early */ -SET_NETDEV_DEV (net_dev, dev); +SET_NETDEV_DEV (net_dev, dev->parent);dev_set_drvdata (dev, net_dev); priv =netdev_priv (net_dev);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c +1 -1
@@ -1070,7 +1070,7 @@ void mvpp2_cls_oversize_rxq_set(struct mvpp2_port *port) (port->first_rxq >> MVPP2_CLS_OVERSIZE_RXQ_LOW_BITS)); val =mvpp2_read (port->priv,MVPP2_CLS_SWFWD_PCTRL_REG ); - val |=MVPP2_CLS_SWFWD_PCTRL_MASK (port->id); + val &= ~MVPP2_CLS_SWFWD_PCTRL_MASK (port->id);mvpp2_write (port->priv,MVPP2_CLS_SWFWD_PCTRL_REG , val); }
drivers/net/ethernet/mellanox/mlx4/fw.c +1 -1
@@ -2734,7 +2734,7 @@ void mlx4_opreq_action(struct work_struct *work)if (err) {mlx4_err (dev,"Failed to retrieve required operation: %d\n" , err); -return ; + goto out; }MLX4_GET (modifier, outbox,GET_OP_REQ_MODIFIER_OFFSET );MLX4_GET (token, outbox,GET_OP_REQ_TOKEN_OFFSET );
drivers/net/ethernet/mellanox/mlx5/core/cmd.c +14 -0
@@ -861,6 +861,7 @@ static void cmd_work_handler(struct work_struct *work)int alloc_ret;int cmd_mode; +complete (&ent->handling); sem = ent->page_queue ? &cmd->pages_sem : &cmd->sem;down (sem);if (!ent->page_queue) {
@@ -978,6 +979,11 @@ static int wait_func(struct mlx5_core_dev *dev, struct mlx5_cmd_work_ent *ent)struct mlx5_cmd *cmd = &dev->cmd;int err; +if (!wait_for_completion_timeout (&ent->handling, timeout) && +cancel_work_sync (&ent->work)) { + ent->ret = -ECANCELED ; + goto out_err; + }if (cmd->mode ==CMD_MODE_POLLING || ent->polling) {wait_for_completion (&ent->done); }else if (!wait_for_completion_timeout (&ent->done, timeout)) {
@@ -985,12 +991,17 @@ static int wait_func(struct mlx5_core_dev *dev, struct mlx5_cmd_work_ent *ent)mlx5_cmd_comp_handler (dev,1UL << ent->idx, true); } +out_err: err = ent->ret;if (err == -ETIMEDOUT ) {mlx5_core_warn (dev,"%s(0x%x) timeout. Will cause a leak of a command resource\n" ,mlx5_command_str (msg_to_opcode (ent->in)),msg_to_opcode (ent->in)); + }else if (err == -ECANCELED ) { +mlx5_core_warn (dev,"%s(0x%x) canceled on out of queue timeout.\n" , +mlx5_command_str (msg_to_opcode (ent->in)), +msg_to_opcode (ent->in)); }mlx5_core_dbg (dev,"err %d, delivery status %s(%d)\n" , err,deliv_status_to_str (ent->status), ent->status);
@@ -1026,6 +1037,7 @@ static int mlx5_cmd_invoke(struct mlx5_core_dev *dev, struct mlx5_cmd_msg *in, ent->token = token; ent->polling = force_polling; +init_completion (&ent->handling);if (!callback)init_completion (&ent->done);
@@ -1045,6 +1057,8 @@ static int mlx5_cmd_invoke(struct mlx5_core_dev *dev, struct mlx5_cmd_msg *in, err =wait_func (dev, ent);if (err == -ETIMEDOUT ) goto out; +if (err == -ECANCELED ) + goto out_free; ds = ent->ts2 - ent->ts1; op =MLX5_GET (mbox_in, in->first.data, opcode);
drivers/net/ethernet/mellanox/mlx5/core/en.h +1 -1
@@ -1103,7 +1103,7 @@ void mlx5e_close_drop_rq(struct mlx5e_rq *drop_rq);int mlx5e_create_indirect_rqt (struct mlx5e_priv *priv);int mlx5e_create_indirect_tirs (struct mlx5e_priv *priv,bool inner_ttc); -void mlx5e_destroy_indirect_tirs (struct mlx5e_priv *priv,bool inner_ttc); +void mlx5e_destroy_indirect_tirs (struct mlx5e_priv *priv);int mlx5e_create_direct_rqts (struct mlx5e_priv *priv,struct mlx5e_tir *tirs);void mlx5e_destroy_direct_rqts (struct mlx5e_priv *priv,struct mlx5e_tir *tirs);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls.c +1 -1
@@ -69,8 +69,8 @@ static void mlx5e_ktls_del(struct net_device *netdev,struct mlx5e_ktls_offload_context_tx *tx_priv =mlx5e_get_ktls_tx_priv_ctx (tls_ctx); -mlx5_ktls_destroy_key (priv->mdev, tx_priv->key_id);mlx5e_destroy_tis (priv->mdev, tx_priv->tisn); +mlx5_ktls_destroy_key (priv->mdev, tx_priv->key_id);kvfree (tx_priv); }
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +7 -5
@@ -2758,7 +2758,8 @@ void mlx5e_modify_tirs_hash(struct mlx5e_priv *priv, void *in, int inlen)mlx5_core_modify_tir (mdev, priv->indir_tir[tt].tirn, in, inlen); } -if (!mlx5e_tunnel_inner_ft_supported (priv->mdev)) +/* Verify inner tirs resources allocated */ +if (!priv->inner_indir_tir[0 ].tirn)return ;for (tt =0 ; tt <MLX5E_NUM_INDIR_TIRS ; tt++) {
@@ -3405,14 +3406,15 @@ int mlx5e_create_direct_tirs(struct mlx5e_priv *priv, struct mlx5e_tir *tirs)return err; } -void mlx5e_destroy_indirect_tirs (struct mlx5e_priv *priv,bool inner_ttc) +void mlx5e_destroy_indirect_tirs (struct mlx5e_priv *priv) {int i;for (i =0 ; i <MLX5E_NUM_INDIR_TIRS ; i++)mlx5e_destroy_tir (priv->mdev, &priv->indir_tir[i]); -if (!inner_ttc || !mlx5e_tunnel_inner_ft_supported (priv->mdev)) +/* Verify inner tirs resources allocated */ +if (!priv->inner_indir_tir[0 ].tirn)return ;for (i =0 ; i <MLX5E_NUM_INDIR_TIRS ; i++)
@@ -5119,7 +5121,7 @@ static int mlx5e_init_nic_rx(struct mlx5e_priv *priv) err_destroy_direct_tirs:mlx5e_destroy_direct_tirs (priv, priv->direct_tir); err_destroy_indirect_tirs: -mlx5e_destroy_indirect_tirs (priv, true); +mlx5e_destroy_indirect_tirs (priv); err_destroy_direct_rqts:mlx5e_destroy_direct_rqts (priv, priv->direct_tir); err_destroy_indirect_rqts:
@@ -5138,7 +5140,7 @@ static void mlx5e_cleanup_nic_rx(struct mlx5e_priv *priv)mlx5e_destroy_direct_tirs (priv, priv->xsk_tir);mlx5e_destroy_direct_rqts (priv, priv->xsk_tir);mlx5e_destroy_direct_tirs (priv, priv->direct_tir); -mlx5e_destroy_indirect_tirs (priv, true); +mlx5e_destroy_indirect_tirs (priv);mlx5e_destroy_direct_rqts (priv, priv->direct_tir);mlx5e_destroy_rqt (priv, &priv->indir_rqt);mlx5e_close_drop_rq (&priv->drop_rq);
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c +2 -2
@@ -1597,7 +1597,7 @@ static int mlx5e_init_rep_rx(struct mlx5e_priv *priv) err_destroy_direct_tirs:mlx5e_destroy_direct_tirs (priv, priv->direct_tir); err_destroy_indirect_tirs: -mlx5e_destroy_indirect_tirs (priv, false); +mlx5e_destroy_indirect_tirs (priv); err_destroy_direct_rqts:mlx5e_destroy_direct_rqts (priv, priv->direct_tir); err_destroy_indirect_rqts:
@@ -1614,7 +1614,7 @@ static void mlx5e_cleanup_rep_rx(struct mlx5e_priv *priv)mlx5_del_flow_rules (rpriv->vport_rx_rule);mlx5e_destroy_ttc_table (priv, &priv->fs.ttc);mlx5e_destroy_direct_tirs (priv, priv->direct_tir); -mlx5e_destroy_indirect_tirs (priv, false); +mlx5e_destroy_indirect_tirs (priv);mlx5e_destroy_direct_rqts (priv, priv->direct_tir);mlx5e_destroy_rqt (priv, &priv->indir_rqt);mlx5e_close_drop_rq (&priv->drop_rq);
drivers/net/ethernet/mellanox/mlx5/core/en_tx.c +6 -3
@@ -537,10 +537,9 @@ bool mlx5e_poll_tx_cq(struct mlx5e_cq *cq, int napi_budget)void mlx5e_free_txqsq_descs (struct mlx5e_txqsq *sq) {struct mlx5e_tx_wqe_info *wi; +u32 dma_fifo_cc, nbytes =0 ; +u16 ci, sqcc, npkts =0 ;struct sk_buff *skb; -u32 dma_fifo_cc; -u16 sqcc; -u16 ci;int i; sqcc = sq->cc;
@@ -565,11 +564,15 @@ void mlx5e_free_txqsq_descs(struct mlx5e_txqsq *sq) }dev_kfree_skb_any (skb); + npkts++; + nbytes += wi->num_bytes; sqcc += wi->num_wqebbs; } sq->dma_fifo_cc = dma_fifo_cc; sq->cc = sqcc; + +netdev_tx_completed_queue (sq->txq, npkts, nbytes); }#ifdef CONFIG_MLX5_CORE_IPOIB
drivers/net/ethernet/mellanox/mlx5/core/events.c +3 -1
@@ -346,8 +346,10 @@ int mlx5_events_init(struct mlx5_core_dev *dev) events->dev = dev; dev->priv.events = events; events->wq =create_singlethread_workqueue ("mlx5_events" ); -if (!events->wq) +if (!events->wq) { +kfree (events);return -ENOMEM ; + }INIT_WORK (&events->pcie_core_work, mlx5_pcie_event);return 0 ;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c +6 -0
@@ -417,6 +417,12 @@ static void del_sw_ns(struct fs_node *node)static void del_sw_prio (struct fs_node *node) { +struct mlx5_flow_root_namespace *root_ns; +struct mlx5_flow_namespace *ns; + +fs_get_obj (ns, node); + root_ns = container_of(ns, struct mlx5_flow_root_namespace, ns); +mutex_destroy (&root_ns->chain_lock);kfree (node); }
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c +2 -2
@@ -396,7 +396,7 @@ static int mlx5i_init_rx(struct mlx5e_priv *priv) err_destroy_direct_tirs:mlx5e_destroy_direct_tirs (priv, priv->direct_tir); err_destroy_indirect_tirs: -mlx5e_destroy_indirect_tirs (priv, true); +mlx5e_destroy_indirect_tirs (priv); err_destroy_direct_rqts:mlx5e_destroy_direct_rqts (priv, priv->direct_tir); err_destroy_indirect_rqts:
@@ -412,7 +412,7 @@ static void mlx5i_cleanup_rx(struct mlx5e_priv *priv) {mlx5i_destroy_flow_steering (priv);mlx5e_destroy_direct_tirs (priv, priv->direct_tir); -mlx5e_destroy_indirect_tirs (priv, true); +mlx5e_destroy_indirect_tirs (priv);mlx5e_destroy_direct_rqts (priv, priv->direct_tir);mlx5e_destroy_rqt (priv, &priv->indir_rqt);mlx5e_close_drop_rq (&priv->drop_rq);
drivers/net/ethernet/mellanox/mlx5/core/main.c +2 -1
@@ -1183,7 +1183,7 @@ static int mlx5_load_one(struct mlx5_core_dev *dev, bool boot) err =mlx5_function_setup (dev, boot);if (err) - goto out; + goto err_function;if (boot) { err =mlx5_init_once (dev);
@@ -1229,6 +1229,7 @@ static int mlx5_load_one(struct mlx5_core_dev *dev, bool boot)mlx5_cleanup_once (dev); function_teardown:mlx5_function_teardown (dev, boot); +err_function: dev->state =MLX5_DEVICE_STATE_INTERNAL_ERROR ;mutex_unlock (&dev->intf_state_mutex);
drivers/net/ethernet/mellanox/mlxsw/spectrum.c +12 -2
@@ -3932,6 +3932,7 @@ static void mlxsw_sp_ports_remove(struct mlxsw_sp *mlxsw_sp)mlxsw_sp_cpu_port_remove (mlxsw_sp);kfree (mlxsw_sp->port_to_module);kfree (mlxsw_sp->ports); + mlxsw_sp->ports =NULL ; }static int mlxsw_sp_ports_create (struct mlxsw_sp *mlxsw_sp)
@@ -3986,6 +3987,7 @@ static int mlxsw_sp_ports_create(struct mlxsw_sp *mlxsw_sp)kfree (mlxsw_sp->port_to_module); err_port_to_module_alloc:kfree (mlxsw_sp->ports); + mlxsw_sp->ports =NULL ;return err; }
@@ -4040,6 +4042,14 @@ static void mlxsw_sp_port_unsplit_create(struct mlxsw_sp *mlxsw_sp, } } +static struct mlxsw_sp_port * +mlxsw_sp_port_get_by_local_port (struct mlxsw_sp *mlxsw_sp,u8 local_port) +{ +if (mlxsw_sp->ports && mlxsw_sp->ports[local_port]) +return mlxsw_sp->ports[local_port]; +return NULL ; +} +static int mlxsw_sp_port_split (struct mlxsw_core *mlxsw_core,u8 local_port,unsigned int count,struct netlink_ext_ack *extack)
@@ -4058,7 +4068,7 @@ static int mlxsw_sp_port_split(struct mlxsw_core *mlxsw_core, u8 local_port, local_ports_in_1x =MLXSW_CORE_RES_GET (mlxsw_core,LOCAL_PORTS_IN_1X ); local_ports_in_2x =MLXSW_CORE_RES_GET (mlxsw_core,LOCAL_PORTS_IN_2X ); - mlxsw_sp_port = mlxsw_sp->ports[local_port]; + mlxsw_sp_port =mlxsw_sp_port_get_by_local_port (mlxsw_sp, local_port);if (!mlxsw_sp_port) {dev_err (mlxsw_sp->bus_info->dev,"Port number \"%d\" does not exist\n" , local_port);
@@ -4136,7 +4146,7 @@ static int mlxsw_sp_port_unsplit(struct mlxsw_core *mlxsw_core, u8 local_port, local_ports_in_1x =MLXSW_CORE_RES_GET (mlxsw_core,LOCAL_PORTS_IN_1X ); local_ports_in_2x =MLXSW_CORE_RES_GET (mlxsw_core,LOCAL_PORTS_IN_2X ); - mlxsw_sp_port = mlxsw_sp->ports[local_port]; + mlxsw_sp_port =mlxsw_sp_port_get_by_local_port (mlxsw_sp, local_port);if (!mlxsw_sp_port) {dev_err (mlxsw_sp->bus_info->dev,"Port number \"%d\" does not exist\n" , local_port);
drivers/net/ethernet/mellanox/mlxsw/switchx2.c +8 -0
@@ -1258,6 +1258,7 @@ static void mlxsw_sx_ports_remove(struct mlxsw_sx *mlxsw_sx)if (mlxsw_sx_port_created (mlxsw_sx, i))mlxsw_sx_port_remove (mlxsw_sx, i);kfree (mlxsw_sx->ports); + mlxsw_sx->ports =NULL ; }static int mlxsw_sx_ports_create (struct mlxsw_sx *mlxsw_sx)
@@ -1292,6 +1293,7 @@ static int mlxsw_sx_ports_create(struct mlxsw_sx *mlxsw_sx)if (mlxsw_sx_port_created (mlxsw_sx, i))mlxsw_sx_port_remove (mlxsw_sx, i);kfree (mlxsw_sx->ports); + mlxsw_sx->ports =NULL ;return err; }
@@ -1375,6 +1377,12 @@ static int mlxsw_sx_port_type_set(struct mlxsw_core *mlxsw_core, u8 local_port,u8 module, width;int err; +if (!mlxsw_sx->ports || !mlxsw_sx->ports[local_port]) { +dev_err (mlxsw_sx->bus_info->dev,"Port number \"%d\" does not exist\n" , + local_port); +return -EINVAL ; + } +if (new_type ==DEVLINK_PORT_TYPE_AUTO )return -EOPNOTSUPP ;
drivers/net/ethernet/microchip/encx24j600.c +4 -1
@@ -1070,7 +1070,7 @@ static int encx24j600_spi_probe(struct spi_device *spi)if (unlikely (ret)) {netif_err (priv, probe, ndev,"Error %d initializing card encx24j600 card\n" , ret); - goto out_free; + goto out_stop; } eidled =encx24j600_read_reg (priv,EIDLED );
@@ -1088,6 +1088,8 @@ static int encx24j600_spi_probe(struct spi_device *spi) out_unregister:unregister_netdev (priv->ndev); +out_stop: +kthread_stop (priv->kworker_task); out_free:free_netdev (ndev);
@@ -1100,6 +1102,7 @@ static int encx24j600_spi_remove(struct spi_device *spi)struct encx24j600_priv *priv =dev_get_drvdata (&spi->dev);unregister_netdev (priv->ndev); +kthread_stop (priv->kworker_task);free_netdev (priv->ndev);
drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c +3 -1
@@ -3651,7 +3651,7 @@ int qlcnic_83xx_interrupt_test(struct net_device *netdev) ahw->diag_cnt =0 ; ret =qlcnic_alloc_mbx_args (&cmd, adapter,QLCNIC_CMD_INTRPT_TEST );if (ret) - goto fail_diag_irq; + goto fail_mbx_args;if (adapter->flags &QLCNIC_MSIX_ENABLED ) intrpt_id = ahw->intr_tbl[0 ].id;
@@ -3681,6 +3681,8 @@ int qlcnic_83xx_interrupt_test(struct net_device *netdev) done:qlcnic_free_mbx_args (&cmd); + +fail_mbx_args:qlcnic_83xx_diag_free_res (netdev, drv_sds_rings); fail_diag_irq:
drivers/net/ethernet/sun/cassini.c +1 -2
@@ -4971,7 +4971,7 @@ static int cas_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) cas_cacheline_size)) {dev_err (&pdev->dev,"Could not set PCI cache " "line size\n" ); - goto err_write_cacheline; + goto err_out_free_res; } }#endif
@@ -5144,7 +5144,6 @@ static int cas_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) err_out_free_res:pci_release_regions (pdev); -err_write_cacheline:/* Try to restore it in case the error occurred after we * set it. */
drivers/net/ethernet/ti/cpsw.c +4 -0
@@ -2999,11 +2999,15 @@ static int cpsw_suspend(struct device *dev)struct cpsw_common *cpsw =dev_get_drvdata (dev);int i; +rtnl_lock (); +for (i =0 ; i < cpsw->data.slaves; i++)if (cpsw->slaves[i].ndev)if (netif_running (cpsw->slaves[i].ndev))cpsw_ndo_stop (cpsw->slaves[i].ndev); +rtnl_unlock (); +/* Select sleep pin state */ pinctrl_pm_select_sleep_state (dev);
drivers/net/hamradio/bpqether.c +2 -1
@@ -127,7 +127,8 @@ static inline struct net_device *bpq_get_ax25_dev(struct net_device *dev) {struct bpqdev *bpq; -list_for_each_entry_rcu (bpq, &bpq_devices, bpq_list) { +list_for_each_entry_rcu (bpq, &bpq_devices, bpq_list, +lockdep_rtnl_is_held ()) {if (bpq->ethdev == dev)return bpq->axdev; }
drivers/net/usb/cdc_ether.c +9 -2
@@ -808,14 +808,21 @@ static const struct usb_device_id products[] = { .driver_info = 0, }, -/* Microsoft Surface 3 dock (based on Realtek RTL8153) */ +/* Microsoft Surface Ethernet Adapter (based on Realtek RTL8153) */ {USB_DEVICE_AND_INTERFACE_INFO (MICROSOFT_VENDOR_ID ,0x07c6 ,USB_CLASS_COMM , USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), .driver_info =0 , }, - /* TP-LINK UE300 USB 3.0 Ethernet Adapters (based on Realtek RTL8153) */ +/* Microsoft Surface Ethernet Adapter (based on Realtek RTL8153B) */ +{ +USB_DEVICE_AND_INTERFACE_INFO (MICROSOFT_VENDOR_ID ,0x0927 ,USB_CLASS_COMM , +USB_CDC_SUBCLASS_ETHERNET ,USB_CDC_PROTO_NONE ), + .driver_info = 0, +}, + +/* TP-LINK UE300 USB 3.0 Ethernet Adapters (based on Realtek RTL8153) */ {USB_DEVICE_AND_INTERFACE_INFO (TPLINK_VENDOR_ID ,0x0601 ,USB_CLASS_COMM , USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),
drivers/net/usb/r8152.c +1 -0
@@ -5837,6 +5837,7 @@ static const struct usb_device_id rtl8152_table[] = { {REALTEK_USB_DEVICE(VENDOR_ID_REALTEK, 0x8153)}, {REALTEK_USB_DEVICE(VENDOR_ID_MICROSOFT, 0x07ab)}, {REALTEK_USB_DEVICE(VENDOR_ID_MICROSOFT, 0x07c6)}, + {REALTEK_USB_DEVICE(VENDOR_ID_MICROSOFT, 0x0927)}, {REALTEK_USB_DEVICE(VENDOR_ID_SAMSUNG, 0xa101)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x304f)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3062)},
drivers/soc/mediatek/mtk-cmdq-helper.c +3 -1
@@ -258,7 +258,9 @@ int cmdq_pkt_flush_async(struct cmdq_pkt *pkt, cmdq_async_flush_cb cb,spin_unlock_irqrestore (&client->lock, flags); } -mbox_send_message (client->chan, pkt); + err =mbox_send_message (client->chan, pkt); +if (err <0 ) +return err;/* We can send next packet immediately, so just call txdone. */ mbox_client_txdone (client->chan,0 );
drivers/usb/dwc3/dwc3-pci.c +1 -0
@@ -114,6 +114,7 @@ static const struct property_entry dwc3_pci_intel_properties[] = {static const struct property_entry dwc3_pci_mrfld_properties[] = {PROPERTY_ENTRY_STRING ("dr_mode" ,"otg" ), +PROPERTY_ENTRY_STRING ("linux,extcon-name" ,"mrfld_bcove_pwrsrc" ),PROPERTY_ENTRY_BOOL ("linux,sysdev_is_parent" ), {} };
drivers/usb/gadget/legacy/inode.c +1 -2
@@ -1361,7 +1361,6 @@ gadgetfs_setup (struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl) req->buf = dev->rbuf; req->context =NULL ; - value = -EOPNOTSUPP ;switch (ctrl->bRequest) {case USB_REQ_GET_DESCRIPTOR :
@@ -1784,7 +1783,7 @@ static ssize_t dev_config (struct file *fd, const char __user *buf, size_t len, loff_t *ptr) { struct dev_data *dev = fd->private_data; -ssize_t value = len, length = len; +ssize_t value, length = len;unsigned total;u32 tag;char *kbuf;
drivers/usb/phy/phy-twl6030-usb.c +9 -3
@@ -377,7 +377,7 @@ static int twl6030_usb_probe(struct platform_device *pdev)if (status <0 ) {dev_err (&pdev->dev,"can't get IRQ %d, err %d\n" , twl->irq1, status); -return status; + goto err_put_regulator; } status = request_threaded_irq(twl->irq2, NULL, twl6030_usb_irq,
@@ -386,8 +386,7 @@ static int twl6030_usb_probe(struct platform_device *pdev)if (status <0 ) {dev_err (&pdev->dev,"can't get IRQ %d, err %d\n" , twl->irq2, status); -free_irq (twl->irq1, twl); -return status; + goto err_free_irq1; } twl->asleep =0 ;
@@ -396,6 +395,13 @@ static int twl6030_usb_probe(struct platform_device *pdev)dev_info (&pdev->dev,"Initialized TWL6030 USB module\n" );return 0 ; + +err_free_irq1: +free_irq (twl->irq1, twl); +err_put_regulator: +regulator_put (twl->usb3v3); + +return status; }static int twl6030_usb_remove (struct platform_device *pdev)
fs/binfmt_elf.c +1 -1
@@ -1731,7 +1731,7 @@ static int fill_thread_core_info(struct elf_thread_core_info *t, (!regset->active || regset->active(t->task, regset) > 0)) {int ret;size_t size =regset_size (t->task, regset); -void *data =kmalloc (size,GFP_KERNEL ); +void *data =kzalloc (size,GFP_KERNEL );if (unlikely (!data))return 0 ; ret = regset->get(t->task, regset,
fs/cachefiles/rdwr.c +1 -1
@@ -60,9 +60,9 @@ static int cachefiles_read_waiter(wait_queue_entry_t *wait, unsigned mode, object = container_of(op->op.object, struct cachefiles_object, fscache);spin_lock (&object->work_lock);list_add_tail (&monitor->op_link, &op->to_do); +fscache_enqueue_retrieval (op);spin_unlock (&object->work_lock); -fscache_enqueue_retrieval (op);fscache_put_retrieval (op);return 0 ; }
fs/ceph/caps.c +1 -1
@@ -3938,7 +3938,7 @@ void ceph_handle_caps(struct ceph_mds_session *session,__ceph_queue_cap_release (session, cap);spin_unlock (&session->s_cap_lock); } - goto done; + goto flush_cap_releases; }/* these will work even if we don't have a cap yet */
fs/cifs/file.c +1 -1
@@ -3997,7 +3997,7 @@ cifs_read(struct file *file, char *read_data, size_t read_size, loff_t *offset)* than it negotiated since it will refuse the read * then. */ -if ((tcon->ses) && !(tcon->ses->capabilities & +if (!(tcon->ses->capabilities & tcon->ses->server->vals->cap_large_files)) { current_read_size =min_t (uint, current_read_size, CIFSMaxBufSize);
fs/gfs2/log.c +3 -3
@@ -598,13 +598,13 @@ void gfs2_add_revoke(struct gfs2_sbd *sdp, struct gfs2_bufdata *bd)struct buffer_head *bh = bd->bd_bh;struct gfs2_glock *gl = bd->bd_gl; + sdp->sd_log_num_revoke++; +if (atomic_inc_return (&gl->gl_revokes) ==1 ) +gfs2_glock_hold (gl); bh->b_private =NULL ; bd->bd_blkno = bh->b_blocknr;gfs2_remove_from_ail (bd);/* drops ref on bh */ bd->bd_bh =NULL ; - sdp->sd_log_num_revoke++; -if (atomic_inc_return (&gl->gl_revokes) ==1 ) -gfs2_glock_hold (gl);set_bit (GLF_LFLUSH , &gl->gl_flags);list_add (&bd->bd_list, &sdp->sd_log_revokes); }
fs/gfs2/quota.c +1 -2
@@ -1040,8 +1040,7 @@ int gfs2_quota_lock(struct gfs2_inode *ip, kuid_t uid, kgid_t gid)u32 x;int error =0 ; -if (capable (CAP_SYS_RESOURCE ) || - sdp->sd_args.ar_quota !=GFS2_QUOTA_ON ) +if (sdp->sd_args.ar_quota !=GFS2_QUOTA_ON )return 0 ; error =gfs2_quota_hold (ip, uid, gid);
fs/gfs2/quota.h +2 -1
@@ -44,7 +44,8 @@ static inline int gfs2_quota_lock_check(struct gfs2_inode *ip,int ret; ap->allowed =UINT_MAX ;/* Assume we are permitted a whole lot */ -if (sdp->sd_args.ar_quota ==GFS2_QUOTA_OFF ) +if (capable (CAP_SYS_RESOURCE ) || + sdp->sd_args.ar_quota ==GFS2_QUOTA_OFF )return 0 ; ret =gfs2_quota_lock (ip,NO_UID_QUOTA_CHANGE ,NO_GID_QUOTA_CHANGE );if (ret)
include/asm-generic/topology.h +1 -1
@@ -48,7 +48,7 @@#ifdef CONFIG_NEED_MULTIPLE_NODES #define cpumask_of_node (node) ((node) == 0 ? cpu_online_mask : cpu_none_mask)#else -#define cpumask_of_node (node) ((void)node, cpu_online_mask) +#define cpumask_of_node (node) ((void)(node), cpu_online_mask)#endif #endif #ifndef pcibus_to_node
include/linux/ieee80211.h +1 -1
@@ -2047,7 +2047,7 @@ ieee80211_he_ppe_size(u8 ppe_thres_hdr, const u8 *phy_cap_info) }/* HE Operation defines */ -#define IEEE80211_HE_OPERATION_DFLT_PE_DURATION_MASK 0x00000003 +#define IEEE80211_HE_OPERATION_DFLT_PE_DURATION_MASK 0x00000007#define IEEE80211_HE_OPERATION_TWT_REQUIRED 0x00000008#define IEEE80211_HE_OPERATION_RTS_THRESHOLD_MASK 0x00003ff0#define IEEE80211_HE_OPERATION_RTS_THRESHOLD_OFFSET 4
include/linux/mlx5/driver.h +1 -0
@@ -756,6 +756,7 @@ struct mlx5_cmd_work_ent {struct delayed_work cb_timeout_work;void *context;int idx; +struct completion handling;struct completion done;struct mlx5_cmd *cmd;struct work_struct work;
include/linux/mm.h +13 -2
@@ -695,6 +695,11 @@ static inline void *kvcalloc(size_t n, size_t size, gfp_t flags)extern void kvfree (const void *addr); +/* +* Mapcount of compound page as a whole, does not include mapped sub-pages. +* +* Must be called only for compound pages or any their tail sub-pages. +*/ static inline int compound_mapcount (struct page *page) {VM_BUG_ON_PAGE (!PageCompound (page), page);
@@ -714,10 +719,16 @@ static inline void page_mapcount_reset(struct page *page)int __page_mapcount (struct page *page); +/* +* Mapcount of 0-order page; when compound sub-page, includes +* compound_mapcount(). +* +* Result is undefined for pages which cannot be mapped into userspace. +* For example SLAB or special types of pages. See function page_has_type(). +* They use this place in struct page differently. +*/ static inline int page_mapcount (struct page *page) { -VM_BUG_ON_PAGE (PageSlab (page), page); -if (unlikely (PageCompound (page)))return __page_mapcount (page);return atomic_read (&page->_mapcount) +1 ;
include/linux/netfilter/nf_conntrack_pptp.h +1 -1
@@ -10,7 +10,7 @@#include <net/netfilter/nf_conntrack_expect.h> #include <uapi/linux/netfilter/nf_conntrack_tuple_common.h> -extern const char *const pptp_msg_name[]; +const char *pptp_msg_name (u_int16_t msg);/* state of the control session */ enum pptp_ctrlsess_state {
include/net/act_api.h +2 -1
@@ -69,7 +69,8 @@ static inline void tcf_tm_dump(struct tcf_t *dtm, const struct tcf_t *stm) { dtm->install =jiffies_to_clock_t (jiffies - stm->install); dtm->lastuse =jiffies_to_clock_t (jiffies - stm->lastuse); - dtm->firstuse =jiffies_to_clock_t (jiffies - stm->firstuse); + dtm->firstuse = stm->firstuse ? +jiffies_to_clock_t (jiffies - stm->firstuse) :0 ; dtm->expires =jiffies_to_clock_t (stm->expires); }
include/net/ip_fib.h +10 -1
@@ -244,7 +244,6 @@ struct fib_dump_filter {u32 table_id;/* filter_set is an optimization that an entry is set */ bool filter_set; -bool dump_all_families;bool dump_routes;bool dump_exceptions;unsigned char protocol;
@@ -423,6 +422,16 @@ static inline int fib_num_tclassid_users(struct net *net)#endif int fib_unmerge (struct net *net); +static inline bool nhc_l3mdev_matches_dev (const struct fib_nh_common *nhc, +const struct net_device *dev) +{ +if (nhc->nhc_dev == dev || +l3mdev_master_ifindex_rcu (nhc->nhc_dev) == dev->ifindex) +return true; + +return false; +} +/* Exported by fib_semantics.c */ int ip_fib_check_default (__be32 gw,struct net_device *dev);int fib_sync_down_dev (struct net_device *dev,unsigned long event,bool force);
include/net/nexthop.h +51 -16
114 lines not on this page · raw message
include/net/tls.h +4 -0
@@ -157,6 +157,8 @@ struct tls_sw_context_tx {struct tls_rec *open_rec;struct list_head tx_list;atomic_t encrypt_pending; +/* protect crypto_wait with encrypt_pending */ +spinlock_t encrypt_compl_lock;int async_notify;int async_capable;
@@ -177,6 +179,8 @@ struct tls_sw_context_rx {int async_capable;bool decrypted;atomic_t decrypt_pending; +/* protect crypto_wait with decrypt_pending*/ +spinlock_t decrypt_compl_lock;bool async_notify; };
include/rdma/uverbs_std_types.h +1 -1
@@ -88,7 +88,7 @@ struct ib_uobject *__uobj_get_destroy(const struct uverbs_api_object *obj,static inline void uobj_put_destroy (struct ib_uobject *uobj) { -rdma_lookup_put_uobject (uobj,UVERBS_LOOKUP_WRITE ); +rdma_lookup_put_uobject (uobj,UVERBS_LOOKUP_DESTROY ); }static inline void uobj_put_read (struct ib_uobject *uobj)
include/uapi/linux/xfrm.h +1 -1
@@ -304,7 +304,7 @@ enum xfrm_attr_type_t {XFRMA_PROTO ,/* __u8 */ XFRMA_ADDRESS_FILTER ,/* struct xfrm_address_filter */ XFRMA_PAD , -XFRMA_OFFLOAD_DEV ,/* struct xfrm_state_offload */ +XFRMA_OFFLOAD_DEV ,/* struct xfrm_user_offload */ XFRMA_SET_MARK ,/* __u32 */ XFRMA_SET_MARK_MASK ,/* __u32 */ XFRMA_IF_ID, /* __u32 */
mm/khugepaged.c +1 -0
@@ -1655,6 +1655,7 @@ static void collapse_file(struct mm_struct *mm,if (page_has_private (page) && !try_to_release_page (page,GFP_KERNEL )) { result =SCAN_PAGE_HAS_PRIVATE ; +putback_lru_page (page); goto out_unlock; }
net/ax25/af_ax25.c +4 -2
@@ -635,8 +635,10 @@ static int ax25_setsockopt(struct socket *sock, int level, int optname,break ;case SO_BINDTODEVICE : -if (optlen >IFNAMSIZ ) - optlen =IFNAMSIZ ; +if (optlen >IFNAMSIZ -1 ) + optlen =IFNAMSIZ -1 ; + +memset (devname,0 ,sizeof (devname));if (copy_from_user (devname, optval, optlen)) { res = -EFAULT ;
net/bridge/netfilter/nft_reject_bridge.c +6 -0
@@ -31,6 +31,12 @@ static void nft_reject_br_push_etherhdr(struct sk_buff *oldskb,ether_addr_copy (eth->h_dest,eth_hdr (oldskb)->h_source); eth->h_proto =eth_hdr (oldskb)->h_proto;skb_pull (nskb,ETH_HLEN ); + +if (skb_vlan_tag_present (oldskb)) { +u16 vid =skb_vlan_tag_get (oldskb); + +__vlan_hwaccel_put_tag (nskb, oldskb->vlan_proto, vid); + } }static int nft_bridge_iphdr_validate (struct sk_buff *skb)
net/ceph/osd_client.c +3 -1
@@ -3652,7 +3652,9 @@ static void handle_reply(struct ceph_osd *osd, struct ceph_msg *msg)* supported. */ req->r_t.target_oloc.pool = m.redirect.oloc.pool; - req->r_flags |=CEPH_OSD_FLAG_REDIRECTED ; + req->r_flags |=CEPH_OSD_FLAG_REDIRECTED | +CEPH_OSD_FLAG_IGNORE_OVERLAY | +CEPH_OSD_FLAG_IGNORE_CACHE ; req->r_tid =0 ;__submit_request (req, false); goto out_unlock_osdc;
net/core/dev.c +15 -5
@@ -4713,11 +4713,12 @@ static inline int nf_ingress(struct sk_buff *skb, struct packet_type **pt_prev,return 0 ; } -static int __netif_receive_skb_core (struct sk_buff *skb,bool pfmemalloc, +static int __netif_receive_skb_core (struct sk_buff **pskb,bool pfmemalloc,struct packet_type **ppt_prev) {struct packet_type *ptype, *pt_prev;rx_handler_func_t *rx_handler; +struct sk_buff *skb = *pskb;struct net_device *orig_dev;bool deliver_exact = false;int ret =NET_RX_DROP ;
@@ -4748,8 +4749,10 @@ static int __netif_receive_skb_core(struct sk_buff *skb, bool pfmemalloc, ret2 =do_xdp_generic (rcu_dereference (skb->dev->xdp_prog), skb);preempt_enable (); -if (ret2 !=XDP_PASS ) -return NET_RX_DROP ; +if (ret2 !=XDP_PASS ) { + ret =NET_RX_DROP ; + goto out; + }skb_reset_mac_len (skb); }
@@ -4899,6 +4902,13 @@ static int __netif_receive_skb_core(struct sk_buff *skb, bool pfmemalloc, } out: +/* The invariant here is that if *ppt_prev is not NULL +* then skb should also be non-NULL. +* +* Apparently *ppt_prev assignment above holds this invariant due to +* skb dereferencing near it. +*/ + *pskb = skb;return ret; }
@@ -4908,7 +4918,7 @@ static int __netif_receive_skb_one_core(struct sk_buff *skb, bool pfmemalloc)struct packet_type *pt_prev =NULL ;int ret; - ret =__netif_receive_skb_core (skb, pfmemalloc, &pt_prev); + ret =__netif_receive_skb_core (&skb, pfmemalloc, &pt_prev);if (pt_prev) ret =INDIRECT_CALL_INET (pt_prev->func, ipv6_rcv, ip_rcv, skb, skb->dev, pt_prev, orig_dev);
@@ -4986,7 +4996,7 @@ static void __netif_receive_skb_list_core(struct list_head *head, bool pfmemallostruct packet_type *pt_prev =NULL ;skb_list_del_init (skb); -__netif_receive_skb_core (skb, pfmemalloc, &pt_prev); +__netif_receive_skb_core (&skb, pfmemalloc, &pt_prev);if (!pt_prev)continue ;if (pt_curr != pt_prev || od_curr != orig_dev) {
net/dsa/slave.c +1 -0
@@ -1409,6 +1409,7 @@ int dsa_slave_create(struct dsa_port *port)if (ds->ops->port_vlan_add && ds->ops->port_vlan_del) slave_dev->features |=NETIF_F_HW_VLAN_CTAG_FILTER ; slave_dev->hw_features |=NETIF_F_HW_TC ; + slave_dev->features |=NETIF_F_LLTX ; slave_dev->ethtool_ops = &dsa_slave_ethtool_ops;if (!IS_ERR_OR_NULL (port->mac))ether_addr_copy (slave_dev->dev_addr, port->mac);
net/dsa/tag_mtk.c +15 -0
@@ -15,6 +15,7 @@#define MTK_HDR_XMIT_TAGGED_TPID_8100 1#define MTK_HDR_RECV_SOURCE_PORT_MASK GENMASK(2, 0)#define MTK_HDR_XMIT_DP_BIT_MASK GENMASK(5, 0) +#define MTK_HDR_XMIT_SA_DIS BIT(6)static struct sk_buff *mtk_tag_xmit (struct sk_buff *skb,struct net_device *dev)
@@ -22,6 +23,9 @@ static struct sk_buff *mtk_tag_xmit(struct sk_buff *skb,struct dsa_port *dp =dsa_slave_to_port (dev);u8 *mtk_tag;bool is_vlan_skb = true; +unsigned char *dest =eth_hdr (skb)->h_dest; +bool is_multicast_skb =is_multicast_ether_addr (dest) && + !is_broadcast_ether_addr (dest);/* Build the special tag after the MAC Source Address. If VLAN header * is present, it's required that VLAN header and special tag is
@@ -47,6 +51,10 @@ static struct sk_buff *mtk_tag_xmit(struct sk_buff *skb,MTK_HDR_XMIT_UNTAGGED ; mtk_tag[1 ] = (1 << dp->index) &MTK_HDR_XMIT_DP_BIT_MASK ; +/* Disable SA learning for multicast frames */ +if (unlikely (is_multicast_skb)) + mtk_tag[1 ] |=MTK_HDR_XMIT_SA_DIS ; +/* Tag control information is kept for 802.1Q */ if (!is_vlan_skb) { mtk_tag[2 ] =0 ;
@@ -61,6 +69,9 @@ static struct sk_buff *mtk_tag_rcv(struct sk_buff *skb, struct net_device *dev, {int port;__be16 *phdr, hdr; +unsigned char *dest =eth_hdr (skb)->h_dest; +bool is_multicast_skb =is_multicast_ether_addr (dest) && + !is_broadcast_ether_addr (dest);if (unlikely (!pskb_may_pull (skb,MTK_HDR_LEN )))return NULL ;
@@ -86,6 +97,10 @@ static struct sk_buff *mtk_tag_rcv(struct sk_buff *skb, struct net_device *dev,if (!skb->dev)return NULL ; +/* Only unicast or broadcast frames are offloaded */ +if (likely (!is_multicast_skb)) + skb->offload_fwd_mark =1 ; +return skb; }
net/ipv4/esp4_offload.c +1 -3
@@ -63,10 +63,8 @@ static struct sk_buff *esp4_gro_receive(struct list_head *head, sp->olen++; xo =xfrm_offload (skb); -if (!xo) { -xfrm_state_put (x); +if (!xo) goto out_reset; - } } xo->flags |=XFRM_GRO ;
net/ipv4/fib_frontend.c +11 -11
@@ -319,17 +319,18 @@ bool fib_info_nh_uses_dev(struct fib_info *fi, const struct net_device *dev) {bool dev_match = false;#ifdef CONFIG_IP_ROUTE_MULTIPATH -int ret; +if (unlikely (fi->nh)) { + dev_match =nexthop_uses_dev (fi->nh, dev); + }else { +int ret; -for (ret =0 ; ret <fib_info_num_path (fi); ret++) { -const struct fib_nh_common *nhc =fib_info_nhc (fi, ret); +for (ret =0 ; ret <fib_info_num_path (fi); ret++) { +const struct fib_nh_common *nhc =fib_info_nhc (fi, ret); -if (nhc->nhc_dev == dev) { - dev_match = true; -break ; - }else if (l3mdev_master_ifindex_rcu (nhc->nhc_dev) == dev->ifindex) { - dev_match = true; -break ; +if (nhc_l3mdev_matches_dev (nhc, dev)) { + dev_match = true; +break ; + } } }#else
@@ -928,7 +929,6 @@ int ip_valid_fib_dump_req(struct net *net, const struct nlmsghdr *nlh,else filter->dump_exceptions = false; - filter->dump_all_families = (rtm->rtm_family ==AF_UNSPEC ); filter->flags = rtm->rtm_flags; filter->protocol = rtm->rtm_protocol; filter->rt_type = rtm->rtm_type;
@@ -1000,7 +1000,7 @@ static int inet_dump_fib(struct sk_buff *skb, struct netlink_callback *cb)if (filter.table_id) { tb =fib_get_table (net, filter.table_id);if (!tb) { -if (filter.dump_all_families) +if (rtnl_msg_family (cb->nlh) !=PF_INET )return skb->len;NL_SET_ERR_MSG (cb->extack,"ipv4: FIB table does not exist" );
net/ipv4/inet_connection_sock.c +24 -19
98 lines not on this page · raw message
net/ipv4/ip_vti.c +22 -1
@@ -93,7 +93,28 @@ static int vti_rcv_proto(struct sk_buff *skb)static int vti_rcv_tunnel (struct sk_buff *skb) { -return vti_rcv (skb,ip_hdr (skb)->saddr, true); +struct ip_tunnel_net *itn =net_generic (dev_net (skb->dev), vti_net_id); +const struct iphdr *iph =ip_hdr (skb); +struct ip_tunnel *tunnel; + + tunnel =ip_tunnel_lookup (itn, skb->dev->ifindex,TUNNEL_NO_KEY , + iph->saddr, iph->daddr,0 ); +if (tunnel) { +struct tnl_ptk_info tpi = { + .proto =htons (ETH_P_IP ), + }; + +if (!xfrm4_policy_check (NULL ,XFRM_POLICY_IN , skb)) + goto drop; +if (iptunnel_pull_header (skb,0 , tpi.proto, false)) + goto drop; +return ip_tunnel_rcv (tunnel, skb, &tpi,NULL , false); + } + +return -EINVAL ; +drop: +kfree_skb (skb); +return 0 ; }static int vti_rcv_cb (struct sk_buff *skb,int err)
net/ipv4/ipip.c +1 -1
@@ -698,7 +698,7 @@ static int __init ipip_init(void) rtnl_link_failed:#if IS_ENABLED (CONFIG_MPLS ) -xfrm4_tunnel_deregister (&mplsip_handler,AF_INET ); +xfrm4_tunnel_deregister (&mplsip_handler,AF_MPLS ); xfrm_tunnel_mplsip_failed:#endif
net/ipv4/ipmr.c +1 -1
@@ -2609,7 +2609,7 @@ static int ipmr_rtm_dumproute(struct sk_buff *skb, struct netlink_callback *cb) mrt =ipmr_get_table (sock_net (skb->sk), filter.table_id);if (!mrt) { -if (filter.dump_all_families) +if (rtnl_msg_family (cb->nlh) !=RTNL_FAMILY_IPMR )return skb->len;NL_SET_ERR_MSG (cb->extack,"ipv4: MR table does not exist" );
net/ipv4/netfilter/nf_nat_pptp.c +2 -5
@@ -166,8 +166,7 @@ pptp_outbound_pkt(struct sk_buff *skb,break ;default :pr_debug ("unknown outbound packet 0x%04x:%s\n" , msg, - msg <=PPTP_MSG_MAX ? pptp_msg_name[msg] : - pptp_msg_name[0 ]); +pptp_msg_name (msg));/* fall through */ case PPTP_SET_LINK_INFO :/* only need to NAT in case PAC is behind NAT box */
@@ -268,9 +267,7 @@ pptp_inbound_pkt(struct sk_buff *skb, pcid_off = offsetof(union pptp_ctrl_union, setlink.peersCallID);break ;default : -pr_debug ("unknown inbound packet %s\n" , - msg <=PPTP_MSG_MAX ? pptp_msg_name[msg] : - pptp_msg_name[0 ]); +pr_debug ("unknown inbound packet %s\n" ,pptp_msg_name (msg));/* fall through */ case PPTP_START_SESSION_REQUEST :case PPTP_START_SESSION_REPLY :
net/ipv4/nexthop.c +65 -40
179 lines not on this page · raw message
net/ipv4/route.c +6 -8
@@ -490,18 +490,16 @@ u32 ip_idents_reserve(u32 hash, int segs)atomic_t *p_id = ip_idents + hash %IP_IDENTS_SZ ;u32 old =READ_ONCE (*p_tstamp);u32 now = (u32 )jiffies; -u32 new, delta =0 ; +u32 delta =0 ;if (old != now &&cmpxchg (p_tstamp, old, now) == old) delta =prandom_u32_max (now - old); -/* Do not use atomic_add_return() as it makes UBSAN unhappy */ -do { - old = (u32 )atomic_read (p_id); - new = old + delta + segs; - }while (atomic_cmpxchg (p_id, old, new) != old); - -return new - segs; +/* If UBSAN reports an error there, please make sure your compiler +* supports -fno-strict-overflow before reporting it that was a bug +* in UBSAN, and it has been fixed in GCC-8. +*/ +return atomic_add_return (segs + delta, p_id) - segs; }EXPORT_SYMBOL (ip_idents_reserve);
net/ipv6/esp6_offload.c +9 -4
@@ -85,10 +85,8 @@ static struct sk_buff *esp6_gro_receive(struct list_head *head, sp->olen++; xo =xfrm_offload (skb); -if (!xo) { -xfrm_state_put (x); +if (!xo) goto out_reset; - } } xo->flags |=XFRM_GRO ;
@@ -123,9 +121,16 @@ static void esp6_gso_encap(struct xfrm_state *x, struct sk_buff *skb)struct ip_esp_hdr *esph;struct ipv6hdr *iph =ipv6_hdr (skb);struct xfrm_offload *xo =xfrm_offload (skb); -int proto = iph->nexthdr; +u8 proto = iph->nexthdr;skb_push (skb, -skb_network_offset (skb)); + +if (x->outer_mode.encap ==XFRM_MODE_TRANSPORT ) { +__be16 frag; + +ipv6_skip_exthdr (skb,sizeof (struct ipv6hdr ), &proto, &frag); + } + esph =ip_esp_hdr (skb); *skb_mac_header (skb) =IPPROTO_ESP ;
net/ipv6/ip6_fib.c +1 -1
@@ -613,7 +613,7 @@ static int inet6_dump_fib(struct sk_buff *skb, struct netlink_callback *cb)if (arg.filter.table_id) { tb =fib6_get_table (net, arg.filter.table_id);if (!tb) { -if (arg.filter.dump_all_families) +if (rtnl_msg_family (cb->nlh) !=PF_INET6 ) goto out;NL_SET_ERR_MSG_MOD (cb->extack,"FIB table does not exist" );
net/ipv6/ip6mr.c +1 -1
@@ -2498,7 +2498,7 @@ static int ip6mr_rtm_dumproute(struct sk_buff *skb, struct netlink_callback *cb) mrt =ip6mr_get_table (sock_net (skb->sk), filter.table_id);if (!mrt) { -if (filter.dump_all_families) +if (rtnl_msg_family (cb->nlh) !=RTNL_FAMILY_IP6MR )return skb->len;NL_SET_ERR_MSG_MOD (cb->extack,"MR table does not exist" );
net/mac80211/mesh_hwmp.c +7 -0
@@ -1103,7 +1103,14 @@ void mesh_path_start_discovery(struct ieee80211_sub_if_data *sdata)mesh_path_sel_frame_tx (MPATH_PREQ ,0 , sdata->vif.addr, ifmsh->sn, target_flags, mpath->dst, mpath->sn, da,0 , ttl, lifetime,0 , ifmsh->preq_id++, sdata); + +spin_lock_bh (&mpath->state_lock); +if (mpath->flags &MESH_PATH_DELETED ) { +spin_unlock_bh (&mpath->state_lock); + goto enddiscovery; + }mod_timer (&mpath->timer, jiffies + mpath->discovery_timeout); +spin_unlock_bh (&mpath->state_lock); enddiscovery:rcu_read_unlock ();
net/netfilter/ipset/ip_set_list_set.c +1 -1
@@ -59,7 +59,7 @@ list_set_ktest(struct ip_set *set, const struct sk_buff *skb,/* Don't lookup sub-counters at all */ opt->cmdflags &= ~IPSET_FLAG_MATCH_COUNTERS ;if (opt->cmdflags &IPSET_FLAG_SKIP_SUBCOUNTER_UPDATE ) - opt->cmdflags &= ~IPSET_FLAG_SKIP_COUNTER_UPDATE ; + opt->cmdflags |=IPSET_FLAG_SKIP_COUNTER_UPDATE ;list_for_each_entry_rcu (e, &map->members, list) { ret =ip_set_test (e->id, skb, par, opt);if (ret <=0 )
net/netfilter/nf_conntrack_core.c +73 -7
101 lines not on this page · raw message
net/netfilter/nf_conntrack_pptp.c +35 -27
62 lines not on this page · raw message
net/tls/tls_sw.c +37 -13
50 lines not on this page · raw message
tools/arch/x86/include/uapi/asm/unistd.h +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.