Linux 5.10.193
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.193 kernel.
All users of the 5.10 kernel series must upgrade.
The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.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/mips/include/asm/cpu-features.h | 21 + arch/x86/kernel/fpu/xstate.c | 8 drivers/block/rbd.c | 139 ++++++++---- drivers/clk/clk-devres.c | 13 - drivers/dma-buf/sw_sync.c | 18 - drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | 4 drivers/gpu/drm/i915/i915_active.c | 99 ++++++-- drivers/gpu/drm/i915/i915_request.c | 2 drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 13 + drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c | 29 -- drivers/md/dm-integrity.c | 4 drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c | 2 drivers/net/bonding/bond_alb.c | 6 drivers/net/can/vxcan.c | 7 drivers/net/ethernet/broadcom/bgmac.c | 2 drivers/net/ethernet/broadcom/genet/bcmmii.c | 2 drivers/net/ethernet/ibm/ibmveth.c | 2 drivers/net/ethernet/intel/ice/ice_base.c | 3 drivers/net/ethernet/intel/igb/igb_ptp.c | 24 +- drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c | 3 drivers/net/ipvlan/ipvlan_main.c | 3 drivers/net/veth.c | 5 drivers/of/dynamic.c | 31 -- drivers/pci/hotplug/acpiphp_glue.c | 9 drivers/pinctrl/renesas/pinctrl-rza2.c | 17 + drivers/scsi/raid_class.c | 48 ---- drivers/scsi/snic/snic_disc.c | 3 drivers/video/fbdev/core/sysimgblt.c | 64 ++++- fs/dlm/lock.c | 53 ++-- fs/dlm/plock.c | 89 +++++-- fs/dlm/recover.c | 39 +-- fs/nfs/direct.c | 26 +- fs/nfs/nfs4proc.c | 14 - fs/nfsd/nfs4state.c | 2 include/drm/drm_dp_helper.h | 2 include/linux/ceph/msgr.h | 9 include/linux/clk.h | 80 +++--- include/linux/cpuset.h | 12 - include/linux/raid_class.h | 4 include/linux/sched.h | 4 include/net/bonding.h | 25 -- include/net/rtnetlink.h | 4 include/net/sock.h | 7 kernel/cgroup/cgroup.c | 4 kernel/cgroup/cpuset.c | 161 ++++++++++---- kernel/sched/core.c | 41 +-- kernel/sched/deadline.c | 66 ++++- kernel/sched/sched.h | 2 kernel/time/tick-sched.c | 29 ++ kernel/time/tick-sched.h | 4 kernel/torture.c | 2 kernel/trace/trace.c | 15 + kernel/trace/trace_irqsoff.c | 3 kernel/trace/trace_sched_wakeup.c | 2 lib/clz_ctz.c | 32 -- lib/radix-tree.c | 1 mm/memory-failure.c | 136 +++++------ mm/vmalloc.c | 4 net/batman-adv/bat_v_elp.c | 3 net/batman-adv/bat_v_ogm.c | 7 net/batman-adv/hard-interface.c | 14 + net/batman-adv/netlink.c | 3 net/batman-adv/soft-interface.c | 3 net/batman-adv/translation-table.c | 1 net/batman-adv/types.h | 6 net/ceph/mon_client.c | 6 net/core/rtnetlink.c | 43 +++ net/dccp/proto.c | 20 + net/netfilter/nft_set_pipapo.c | 13 - net/sched/sch_api.c | 53 +++- net/sctp/socket.c | 2 net/sunrpc/xprtrdma/verbs.c | 9 security/selinux/ss/policydb.c | 2 sound/core/pcm_memory.c | 44 +++ sound/soc/codecs/rt711-sdw.h | 2 sound/soc/codecs/rt711.c | 30 ++ sound/soc/codecs/rt711.h | 29 ++ sound/soc/intel/boards/sof_sdw.c | 23 +- sound/soc/intel/boards/sof_sdw_common.h | 5 tools/objtool/arch.h | 1 tools/objtool/arch/x86/decode.c | 11 tools/objtool/check.c | 22 + tools/objtool/elf.h | 1 84 files changed, 1140 insertions(+), 668 deletions(-)
Alessio Igor Bogani (1):
igb: Avoid starting unnecessary workqueues
Alexander Aring (5):
dlm: improve plock logging if interrupted
fs: dlm: add pid to debug log
fs: dlm: change plock interrupted message to debug again
fs: dlm: use dlm_plock_info for do_unlock_close
fs: dlm: fix mismatch of plock results from userspace
Alexandre Ghiti (1):
mm: add a call to flush_cache_vmap() in vmap_pfn()
Andrey Skvortsov (1):
clk: Fix slab-out-of-bounds error in devm_clk_release()
Ankit Nautiyal (1):
drm/display/dp: Fix the DP DSC Receiver cap size
Arnd Bergmann (1):
radix tree: remove unused variable
Bard Liao (1):
ASoC: Intel: sof_sdw: include rt711.h for RT711 JD mode
Benjamin Coddington (2):
NFSv4: Fix dropped lock for racing OPEN and delegation return
nfsd: Fix race to FREE_STATEID and cl_revoked
Biju Das (2):
clk: Fix undefined reference to `clk_rate_exclusive_{get,put}'
pinctrl: renesas: rza2: Add lock around pinctrl_generic{{add,remove}_group,{add,remove}_function}
Christian Göttsche (1):
selinux: set next pointer before attaching to list
Chuck Lever (1):
xprtrdma: Remap Receive buffers after a reconnect
Dan Williams (1):
mm: fix page reference leak in soft_offline_page()
Dietmar Eggemann (2):
sched/deadline: Create DL BW alloc, free & check overflow interface cgroup/cpuset: Free DL BW in case can_attach() fails
Eric Dumazet (2):
sock: annotate data-races around prot->memory_pressure
dccp: annotate data-races in dccp_poll()
Fedor Pchelkin (1):
NFSv4: fix out path in __nfs4_get_acl_uncached
Feng Tang (1):
x86/fpu: Set X86_FEATURE_OSXSAVE feature after enabling OSXSAVE in CR4
Florent Fourcot (1):
rtnetlink: return ENODEV when ifname does not exist and group is given
Florian Westphal (1):
netfilter: nf_tables: fix out of memory error handling
Frederic Weisbecker (1):
tick: Detect and fix jiffies update stall
Greg Kroah-Hartman (1):
Linux 5.10.193
Hangbin Liu (1):
bonding: fix macvlan over alb bond support
Hariprasad Kelam (1):
octeontx2-af: SDP: fix receive link config
Helge Deller (1):
lib/clz_ctz.c: Fix __clzdi2() and __ctzdi2() for 32-bit kernels
Ido Schimmel (1):
rtnetlink: Reject negative ifindexes in RTM_NEWLINK
Igor Mammedov (2):
PCI: acpiphp: Reassign resources on bridge if necessary
PCI: acpiphp: Use pci_assign_unassigned_bridge_resources() only for non-root bus
Ilya Dryomov (4):
libceph, rbd: ignore addr->type while comparing in some cases
rbd: make get_lock_owner_info() return a single locker or NULL
rbd: retrieve and check lock owner twice before blocklisting
rbd: prevent busy loop when requesting exclusive lock
Jakob Koschel (1):
dlm: replace usage of found with dedicated list iterator variable
Jakub Kicinski (2):
net: validate veth and vxcan peer ifindexes
net: remove bond_slave_has_mac_rcu()
Jamal Hadi Salim (1):
net/sched: fix a qdisc modification with ambiguous command request
Janusz Krzysztofik (1):
drm/i915: Fix premature release of request's reusable memory
Jesse Brandeburg (1):
ice: fix receive buffer size miscalculation
Jiaxun Yang (2):
MIPS: cpu-features: Enable octeon_cache by cpu_type
MIPS: cpu-features: Use boot_cpu_type for CPU type based features
Joel Fernandes (Google) (1):
torture: Fix hang during kthread shutdown phase
Josip Pavic (1):
drm/amd/display: do not wait for mpc idle if tg is disabled
Juri Lelli (4):
cgroup/cpuset: Rename functions dealing with DEADLINE accounting sched/cpuset: Bring back cpuset_mutex
sched/cpuset: Keep track of SCHED_DEADLINE task in cpusets cgroup/cpuset: Iterate only if DEADLINE tasks are present
Kefeng Wang (1):
mm: memory-failure: kill soft_offline_free_page()
Lu Wei (1):
ipvlan: Fix a reference count leak warning in ipvlan_ns_exit()
Miaohe Lin (1):
mm: memory-failure: fix unexpected return value in soft_offline_page()
Michael Ellerman (1):
ibmveth: Use dcbf rather than dcbfl
Mikulas Patocka (2):
dm integrity: increase RECALC_SECTORS to improve recalculate speed dm integrity: reduce vmalloc space footprint on 32-bit architectures
Nicholas Piggin (1):
timers/nohz: Switch to ONESHOT_STOPPED in the low-res handler when the tick is stopped
Oscar Salvador (2):
mm,hwpoison: refactor get_any_page
mm,hwpoison: fix printing of page flags
Peter Zijlstra (1):
objtool/x86: Fix SRSO mess
Remi Pommarel (3):
batman-adv: Do not get eth header before batadv_check_management_packet
batman-adv: Fix TT global entry leak when client roamed back
batman-adv: Fix batadv_v_ogm_aggr_send memory leak
Rob Clark (1):
dma-buf/sw_sync: Avoid recursive lock during fence signal
Rob Herring (1):
of: dynamic: Refactor action prints to not use "%pOF" inside devtree_lock
Ruan Jinjie (2):
net: bgmac: Fix return value check for fixed_phy_register()
net: bcmgenet: Fix return value check for fixed_phy_register()
Shuming Fan (1):
ASoC: rt711: add two jack detection modes
Sven Eckelmann (3):
batman-adv: Trigger events for auto adjusted MTU
batman-adv: Don't increase MTU when set by user
batman-adv: Hold rtnl lock during MTU update via netlink
Taimur Hassan (1):
drm/amd/display: check TG is non-null before checking if enabled
Takashi Iwai (1):
ALSA: pcm: Fix potential data race at PCM memory allocation helpers
Thomas Zimmermann (2):
fbdev: Improve performance of sys_imageblit()
fbdev: Fix sys_imageblit() for arbitrary image widths
Trond Myklebust (1):
NFS: Fix a use after free in nfs_direct_join_group()
Wei Chen (1):
media: vcodec: Fix potential array out-of-bounds in encoder queue_setup
Zack Rusin (1):
drm/vmwgfx: Fix shader stage validation
Zhang Shurong (1):
fbdev: fix potential OOB read in fast_imageblit()
Zheng Yejian (2):
tracing: Fix cpu buffers unavailable due to 'record_disabled' missed
tracing: Fix memleak due to race between current_tracer and trace
Zhu Wang (2):
scsi: snic: Fix double free in snic_tgt_create()
scsi: core: raid_class: Remove raid_component_add()
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 192 +SUBLEVEL = 193 EXTRAVERSION = NAME = Dare mighty things
arch/mips/include/asm/cpu-features.h +19 -2
@@ -126,7 +126,24 @@#define cpu_has_tx39_cache __opt(MIPS_CPU_TX39_CACHE)#endif #ifndef cpu_has_octeon_cache -#define cpu_has_octeon_cache 0 +#define cpu_has_octeon_cache \ +({ \ + int __res; \ + \ + switch (boot_cpu_type()) { \ + case CPU_CAVIUM_OCTEON: \ + case CPU_CAVIUM_OCTEON_PLUS: \ + case CPU_CAVIUM_OCTEON2: \ + case CPU_CAVIUM_OCTEON3: \ + __res = 1; \ + break; \ + \ + default: \ + __res = 0; \ + } \ + \ + __res; \ +})#endif /* Don't override `cpu_has_fpu' to 1 or the "nofpu" option won't work. */ #ifndef cpu_has_fpu
@@ -353,7 +370,7 @@ ({ \ int __res; \ \ - switch (current_cpu_type()) { \ + switch (boot_cpu_type()) { \ case CPU_M14KC: \ case CPU_74K: \ case CPU_1074K: \
arch/x86/kernel/fpu/xstate.c +8 -0
@@ -892,6 +892,14 @@ void __init fpu__init_system_xstate(void)setup_init_fpu_buf ();setup_xstate_comp_offsets ();setup_supervisor_only_offsets (); + +/* +* CPU capabilities initialization runs before FPU init. So +* X86_FEATURE_OSXSAVE is not set. Now that XSAVE is completely +* functional, set the feature bit so depending code works. +*/ +setup_force_cpu_cap (X86_FEATURE_OSXSAVE ); +print_xstate_offset_size (); pr_info("x86/fpu: Enabled xstate features 0x%llx, context size is %d bytes, using '%s' format.\n",
drivers/block/rbd.c +92 -47
235 lines not on this page · raw message
drivers/clk/clk-devres.c +7 -6
@@ -205,18 +205,19 @@ EXPORT_SYMBOL(devm_clk_put);struct clk *devm_get_clk_from_child (struct device *dev,struct device_node *np,const char *con_id) { -struct clk **ptr, *clk; +struct devm_clk_state *state; +struct clk *clk; - ptr =devres_alloc (devm_clk_release,sizeof (*ptr),GFP_KERNEL ); -if (!ptr) + state =devres_alloc (devm_clk_release,sizeof (*state),GFP_KERNEL ); +if (!state)return ERR_PTR (-ENOMEM ); clk =of_clk_get_by_name (np, con_id);if (!IS_ERR (clk)) { - *ptr = clk; -devres_add (dev, ptr); + state->clk = clk; +devres_add (dev, state); }else { -devres_free (ptr); +devres_free (state); }return clk;
drivers/dma-buf/sw_sync.c +9 -9
@@ -191,6 +191,7 @@ static const struct dma_fence_ops timeline_fence_ops = {*/ static void sync_timeline_signal (struct sync_timeline *obj,unsigned int inc) { +LIST_HEAD (signalled);struct sync_pt *pt, *next;trace_sync_timeline (obj);
@@ -203,21 +204,20 @@ static void sync_timeline_signal(struct sync_timeline *obj, unsigned int inc)if (!timeline_fence_signaled (&pt->base))break ; -list_del_init (&pt->link); +dma_fence_get (&pt->base); + +list_move_tail (&pt->link, &signalled);rb_erase (&pt->node, &obj->pt_tree); -/* -* A signal callback may release the last reference to this -* fence, causing it to be freed. That operation has to be -* last to avoid a use after free inside this loop, and must -* be after we remove the fence from the timeline in order to -* prevent deadlocking on timeline->lock inside -* timeline_fence_release(). -*/ dma_fence_signal_locked (&pt->base); }spin_unlock_irq (&obj->lock); + +list_for_each_entry_safe (pt, next, &signalled, link) { +list_del_init (&pt->link); +dma_fence_put (&pt->base); + } }/**
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c +3 -1
@@ -3282,7 +3282,9 @@ void dcn10_wait_for_mpcc_disconnect(if (pipe_ctx->stream_res.opp->mpcc_disconnect_pending[mpcc_inst]) {struct hubp *hubp =get_hubp_by_inst (res_pool, mpcc_inst); - res_pool->mpc->funcs->wait_for_idle (res_pool->mpc, mpcc_inst); +if (pipe_ctx->stream_res.tg && + pipe_ctx->stream_res.tg->funcs->is_tg_enabled (pipe_ctx->stream_res.tg)) + res_pool->mpc->funcs->wait_for_idle (res_pool->mpc, mpcc_inst); pipe_ctx->stream_res.opp->mpcc_disconnect_pending[mpcc_inst] = false; hubp->funcs->set_blank (hubp, true); }
drivers/gpu/drm/i915/i915_active.c +70 -29
146 lines not on this page · raw message
drivers/gpu/drm/i915/i915_request.c +2 -0
@@ -1525,6 +1525,8 @@ __i915_request_add_to_timeline(struct i915_request *rq) &rq->dep, 0); } +if (prev) +i915_request_put (prev);/* * Make sure that no request gazumped us - if it was allocated after
drivers/gpu/drm/vmwgfx/vmwgfx_drv.h +13 -0
@@ -1606,4 +1606,17 @@ static inline void vmw_mmio_write(u32 value, u32 *addr) {WRITE_ONCE (*addr, value); } + +static inline bool vmw_shadertype_is_valid (enum vmw_sm_type shader_model, +u32 shader_type) +{ +SVGA3dShaderType max_allowed =SVGA3D_SHADERTYPE_PREDX_MAX ; + +if (shader_model >=VMW_SM_5 ) + max_allowed =SVGA3D_SHADERTYPE_MAX ; +else if (shader_model >=VMW_SM_4 ) + max_allowed =SVGA3D_SHADERTYPE_DX10_MAX ; +return shader_type >=SVGA3D_SHADERTYPE_MIN && shader_type < max_allowed; +} +#endif
drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c +11 -18
@@ -1998,7 +1998,7 @@ static int vmw_cmd_set_shader(struct vmw_private *dev_priv, cmd =container_of (header,typeof (*cmd), header); -if (cmd->body.type >=SVGA3D_SHADERTYPE_PREDX_MAX ) { +if (!vmw_shadertype_is_valid (VMW_SM_LEGACY , cmd->body.type)) {VMW_DEBUG_USER ("Illegal shader type %u.\n" , (unsigned int ) cmd->body.type);return -EINVAL ;
@@ -2120,8 +2120,6 @@ vmw_cmd_dx_set_single_constant_buffer(struct vmw_private *dev_priv, SVGA3dCmdHeader *header) {VMW_DECLARE_CMD_VAR (*cmd, SVGA3dCmdDXSetSingleConstantBuffer); -SVGA3dShaderType max_shader_num =has_sm5_context (dev_priv) ? -SVGA3D_NUM_SHADERTYPE :SVGA3D_NUM_SHADERTYPE_DX10 ;struct vmw_resource *res =NULL ;struct vmw_ctx_validation_info *ctx_node =VMW_GET_CTX_NODE (sw_context);
@@ -2138,6 +2136,14 @@ vmw_cmd_dx_set_single_constant_buffer(struct vmw_private *dev_priv,if (unlikely (ret !=0 ))return ret; +if (!vmw_shadertype_is_valid (dev_priv->sm_type, cmd->body.type) || + cmd->body.slot >=SVGA3D_DX_MAX_CONSTBUFFERS ) { +VMW_DEBUG_USER ("Illegal const buffer shader %u slot %u.\n" , + (unsigned int ) cmd->body.type, + (unsigned int ) cmd->body.slot); +return -EINVAL ; + } + binding.bi.ctx = ctx_node->ctx; binding.bi.res = res; binding.bi.bt = vmw_ctx_binding_cb;
@@ -2146,14 +2152,6 @@ vmw_cmd_dx_set_single_constant_buffer(struct vmw_private *dev_priv, binding.size = cmd->body.sizeInBytes; binding.slot = cmd->body.slot; -if (binding.shader_slot >= max_shader_num || - binding.slot >=SVGA3D_DX_MAX_CONSTBUFFERS ) { -VMW_DEBUG_USER ("Illegal const buffer shader %u slot %u.\n" , - (unsigned int ) cmd->body.type, - (unsigned int ) binding.slot); -return -EINVAL ; - } -vmw_binding_add (ctx_node->staged, &binding.bi, binding.shader_slot, binding.slot);
@@ -2174,15 +2172,13 @@ static int vmw_cmd_dx_set_shader_res(struct vmw_private *dev_priv, {VMW_DECLARE_CMD_VAR (*cmd, SVGA3dCmdDXSetShaderResources) =container_of (header,typeof (*cmd), header); -SVGA3dShaderType max_allowed =has_sm5_context (dev_priv) ? -SVGA3D_SHADERTYPE_MAX :SVGA3D_SHADERTYPE_DX10_MAX ;u32 num_sr_view = (cmd->header.size -sizeof (cmd->body)) /sizeof (SVGA3dShaderResourceViewId);if ((u64 ) cmd->body.startView + (u64 ) num_sr_view > (u64 )SVGA3D_DX_MAX_SRVIEWS || - cmd->body.type >= max_allowed) { + !vmw_shadertype_is_valid (dev_priv->sm_type, cmd->body.type)) {VMW_DEBUG_USER ("Invalid shader binding.\n" );return -EINVAL ; }
@@ -2206,8 +2202,6 @@ static int vmw_cmd_dx_set_shader(struct vmw_private *dev_priv, SVGA3dCmdHeader *header) {VMW_DECLARE_CMD_VAR (*cmd, SVGA3dCmdDXSetShader); -SVGA3dShaderType max_allowed =has_sm5_context (dev_priv) ? -SVGA3D_SHADERTYPE_MAX :SVGA3D_SHADERTYPE_DX10_MAX ;struct vmw_resource *res =NULL ;struct vmw_ctx_validation_info *ctx_node =VMW_GET_CTX_NODE (sw_context);struct vmw_ctx_bindinfo_shader binding;
@@ -2218,8 +2212,7 @@ static int vmw_cmd_dx_set_shader(struct vmw_private *dev_priv, cmd =container_of (header,typeof (*cmd), header); -if (cmd->body.type >= max_allowed || - cmd->body.type <SVGA3D_SHADERTYPE_MIN ) { +if (!vmw_shadertype_is_valid (dev_priv->sm_type, cmd->body.type)) {VMW_DEBUG_USER ("Illegal shader type %u.\n" , (unsigned int ) cmd->body.type);return -EINVAL ;
drivers/md/dm-integrity.c +2 -2
@@ -31,11 +31,11 @@#define DEFAULT_BUFFER_SECTORS 128#define DEFAULT_JOURNAL_WATERMARK 50#define DEFAULT_SYNC_MSEC 10000 -#define DEFAULT_MAX_JOURNAL_SECTORS 131072 +#define DEFAULT_MAX_JOURNAL_SECTORS (IS_ENABLED(CONFIG_64BIT) ? 131072 : 8192)#define MIN_LOG2_INTERLEAVE_SECTORS 3#define MAX_LOG2_INTERLEAVE_SECTORS 31#define METADATA_WORKQUEUE_MAX_ACTIVE 16 -#define RECALC_SECTORS 8192 +#define RECALC_SECTORS (IS_ENABLED(CONFIG_64BIT) ? 32768 : 2048)#define RECALC_WRITE_SUPER 16#define BITMAP_BLOCK_SIZE 4096/* don't change it */ #define BITMAP_FLUSH_INTERVAL (10 * HZ)
drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c +2 -0
@@ -729,6 +729,8 @@ static int vb2ops_venc_queue_setup(struct vb2_queue *vq,return -EINVAL ;if (*nplanes) { +if (*nplanes != q_data->fmt->num_planes) +return -EINVAL ;for (i =0 ; i < *nplanes; i++)if (sizes[i] < q_data->sizeimage[i])return -EINVAL ;
drivers/net/bonding/bond_alb.c +3 -3
@@ -656,10 +656,10 @@ static struct slave *rlb_arp_xmit(struct sk_buff *skb, struct bonding *bond)return NULL ; arp = (struct arp_pkt *)skb_network_header (skb); -/* Don't modify or load balance ARPs that do not originate locally -* (e.g.,arrive via a bridge). +/* Don't modify or load balance ARPs that do not originate +* from the bond itself or a VLAN directly above the bond. */ -if (!bond_slave_has_mac_rx (bond, arp->mac_src)) +if (!bond_slave_has_mac_rcu (bond, arp->mac_src))return NULL ;if (arp->op_code ==htons (ARPOP_REPLY )) {
drivers/net/can/vxcan.c +1 -6
@@ -179,12 +179,7 @@ static int vxcan_newlink(struct net *net, struct net_device *dev, nla_peer = data[VXCAN_INFO_PEER ]; ifmp =nla_data (nla_peer); - err =rtnl_nla_parse_ifla (peer_tb, -nla_data (nla_peer) + -sizeof (struct ifinfomsg ), -nla_len (nla_peer) - -sizeof (struct ifinfomsg ), -NULL ); + err =rtnl_nla_parse_ifinfomsg (peer_tb, nla_peer, extack);if (err <0 )return err;
drivers/net/ethernet/broadcom/bgmac.c +1 -1
@@ -1448,7 +1448,7 @@ int bgmac_phy_connect_direct(struct bgmac *bgmac)int err; phy_dev =fixed_phy_register (PHY_POLL , &fphy_status,NULL ); -if (!phy_dev ||IS_ERR (phy_dev)) { +if (IS_ERR (phy_dev)) {dev_err (bgmac->dev,"Failed to register fixed PHY device\n" );return -ENODEV ; }
drivers/net/ethernet/broadcom/genet/bcmmii.c +1 -1
@@ -568,7 +568,7 @@ static int bcmgenet_mii_pd_init(struct bcmgenet_priv *priv) }; phydev =fixed_phy_register (PHY_POLL , &fphy_status,NULL ); -if (!phydev ||IS_ERR (phydev)) { +if (IS_ERR (phydev)) {dev_err (kdev,"failed to register fixed PHY device\n" );return -ENODEV ; }
drivers/net/ethernet/ibm/ibmveth.c +1 -1
@@ -196,7 +196,7 @@ static inline void ibmveth_flush_buffer(void *addr, unsigned long length)unsigned long offset;for (offset =0 ; offset < length; offset +=SMP_CACHE_BYTES ) - asm("dcbfl %0,%1" ::"b" (addr),"r" (offset)); + asm("dcbf %0,%1,1" ::"b" (addr),"r" (offset)); }/* replenish the buffers for a pool. note that we don't need to
drivers/net/ethernet/intel/ice/ice_base.c +2 -1
@@ -353,7 +353,8 @@ int ice_setup_rx_ctx(struct ice_ring *ring)/* Receive Packet Data Buffer Size. * The Packet Data Buffer Size is defined in 128 byte units. */ - rlan_ctx.dbuf = ring->rx_buf_len >>ICE_RLAN_CTX_DBUF_S ; + rlan_ctx.dbuf =DIV_ROUND_UP (ring->rx_buf_len, +BIT_ULL (ICE_RLAN_CTX_DBUF_S ));/* use 32 byte descriptors */ rlan_ctx.dsize =1 ;
drivers/net/ethernet/intel/igb/igb_ptp.c +12 -12
@@ -1262,18 +1262,6 @@ void igb_ptp_init(struct igb_adapter *adapter)return ; } -spin_lock_init (&adapter->tmreg_lock); -INIT_WORK (&adapter->ptp_tx_work, igb_ptp_tx_work); - -if (adapter->ptp_flags &IGB_PTP_OVERFLOW_CHECK ) -INIT_DELAYED_WORK (&adapter->ptp_overflow_work, - igb_ptp_overflow_check); - - adapter->tstamp_config.rx_filter =HWTSTAMP_FILTER_NONE ; - adapter->tstamp_config.tx_type =HWTSTAMP_TX_OFF ; - -igb_ptp_reset (adapter); - adapter->ptp_clock =ptp_clock_register (&adapter->ptp_caps, &adapter->pdev->dev);if (IS_ERR (adapter->ptp_clock)) {
@@ -1283,6 +1271,18 @@ void igb_ptp_init(struct igb_adapter *adapter)dev_info (&adapter->pdev->dev,"added PHC on %s\n" , adapter->netdev->name); adapter->ptp_flags |=IGB_PTP_ENABLED ; + +spin_lock_init (&adapter->tmreg_lock); +INIT_WORK (&adapter->ptp_tx_work, igb_ptp_tx_work); + +if (adapter->ptp_flags &IGB_PTP_OVERFLOW_CHECK ) +INIT_DELAYED_WORK (&adapter->ptp_overflow_work, + igb_ptp_overflow_check); + + adapter->tstamp_config.rx_filter =HWTSTAMP_FILTER_NONE ; + adapter->tstamp_config.tx_type =HWTSTAMP_TX_OFF ; + +igb_ptp_reset (adapter); } }
drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c +2 -1
@@ -2876,9 +2876,10 @@ int rvu_mbox_handler_nix_set_hw_frs(struct rvu *rvu, struct nix_frs_cfg *req,if (link <0 )return NIX_AF_ERR_RX_LINK_INVALID ; -nix_find_link_frs (rvu, req, pcifunc); linkcfg: +nix_find_link_frs (rvu, req, pcifunc); + cfg =rvu_read64 (rvu, blkaddr,NIX_AF_RX_LINKX_CFG (link)); cfg = (cfg & ~(0xFFFFULL <<16 )) | ((u64 )req->maxlen <<16 );if (req->update_minlen)
drivers/net/ipvlan/ipvlan_main.c +2 -1
@@ -745,7 +745,8 @@ static int ipvlan_device_event(struct notifier_block *unused,write_pnet (&port->pnet, newnet); -ipvlan_migrate_l3s_hook (oldnet, newnet); +if (port->mode ==IPVLAN_MODE_L3S ) +ipvlan_migrate_l3s_hook (oldnet, newnet);break ; }case NETDEV_UNREGISTER :
drivers/net/veth.c +1 -4
@@ -1313,10 +1313,7 @@ static int veth_newlink(struct net *src_net, struct net_device *dev, nla_peer = data[VETH_INFO_PEER ]; ifmp =nla_data (nla_peer); - err =rtnl_nla_parse_ifla (peer_tb, -nla_data (nla_peer) +sizeof (struct ifinfomsg ), -nla_len (nla_peer) -sizeof (struct ifinfomsg ), -NULL ); + err =rtnl_nla_parse_ifinfomsg (peer_tb, nla_peer, extack);if (err <0 )return err;
drivers/of/dynamic.c +9 -22
@@ -63,15 +63,14 @@ int of_reconfig_notifier_unregister(struct notifier_block *nb) }EXPORT_SYMBOL_GPL (of_reconfig_notifier_unregister); -#ifdef DEBUG -const char *action_names[] = { +static const char *action_names[] = { + [0 ] ="INVALID" , [OF_RECONFIG_ATTACH_NODE ] ="ATTACH_NODE" , [OF_RECONFIG_DETACH_NODE ] ="DETACH_NODE" , [OF_RECONFIG_ADD_PROPERTY ] ="ADD_PROPERTY" , [OF_RECONFIG_REMOVE_PROPERTY ] ="REMOVE_PROPERTY" , [OF_RECONFIG_UPDATE_PROPERTY ] ="UPDATE_PROPERTY" , }; -#endif int of_reconfig_notify (unsigned long action,struct of_reconfig_data *p) {
@@ -589,21 +588,9 @@ static int __of_changeset_entry_apply(struct of_changeset_entry *ce) } ret =__of_add_property (ce->np, ce->prop); -if (ret) { -pr_err ("changeset: add_property failed @%pOF/%s\n" , - ce->np, - ce->prop->name); -break ; - }break ;case OF_RECONFIG_REMOVE_PROPERTY : ret =__of_remove_property (ce->np, ce->prop); -if (ret) { -pr_err ("changeset: remove_property failed @%pOF/%s\n" , - ce->np, - ce->prop->name); -break ; - }break ;case OF_RECONFIG_UPDATE_PROPERTY :
@@ -617,20 +604,17 @@ static int __of_changeset_entry_apply(struct of_changeset_entry *ce) } ret =__of_update_property (ce->np, ce->prop, &old_prop); -if (ret) { -pr_err ("changeset: update_property failed @%pOF/%s\n" , - ce->np, - ce->prop->name); -break ; - }break ;default : ret = -EINVAL ; }raw_spin_unlock_irqrestore (&devtree_lock, flags); -if (ret) +if (ret) { +pr_err ("changeset: apply failed: %-15s %pOF:%s\n" , + action_names[ce->action], ce->np, ce->prop->name);return ret; + }switch (ce->action) {case OF_RECONFIG_ATTACH_NODE :
@@ -913,6 +897,9 @@ int of_changeset_action(struct of_changeset *ocs, unsigned long action,if (!ce)return -ENOMEM ; +if (WARN_ON (action >=ARRAY_SIZE (action_names))) +return -EINVAL ; +/* get a reference to the node */ ce->action = action; ce->np =of_node_get (np);
drivers/pci/hotplug/acpiphp_glue.c +6 -3
@@ -503,12 +503,15 @@ static void enable_slot(struct acpiphp_slot *slot, bool bridge)if (pass && dev->subordinate) {check_hotplug_bridge (slot, dev);pcibios_resource_survey_bus (dev->subordinate); -__pci_bus_size_bridges (dev->subordinate, - &add_list); +if (pci_is_root_bus (bus)) +__pci_bus_size_bridges (dev->subordinate, &add_list); } } } -__pci_bus_assign_resources (bus, &add_list,NULL ); +if (pci_is_root_bus (bus)) +__pci_bus_assign_resources (bus, &add_list,NULL ); +else +pci_assign_unassigned_bridge_resources (bus->self); }acpiphp_sanitize_bus (bus);
drivers/pinctrl/renesas/pinctrl-rza2.c +15 -2
@@ -14,6 +14,7 @@#include <linux/gpio/driver.h> #include <linux/io.h> #include <linux/module.h> +#include <linux/mutex.h> #include <linux/of_device.h> #include <linux/pinctrl/pinmux.h>
@@ -46,6 +47,7 @@ struct rza2_pinctrl_priv {struct pinctrl_dev *pctl;struct pinctrl_gpio_range gpio_range;int npins; +struct mutex mutex;/* serialize adding groups and functions */ };#define RZA2_PDR (port) (0x0000 + (port) * 2)/* Direction 16-bit */
@@ -359,10 +361,14 @@ static int rza2_dt_node_to_map(struct pinctrl_dev *pctldev, psel_val[i] =MUX_FUNC (value); } +mutex_lock (&priv->mutex); +/* Register a single pin group listing all the pins we read from DT */ gsel =pinctrl_generic_add_group (pctldev, np->name, pins, npins,NULL ); -if (gsel <0 ) -return gsel; +if (gsel <0 ) { + ret = gsel; + goto unlock; + }/* * Register a single group function where the 'data' is an array PSEL
@@ -391,6 +397,8 @@ static int rza2_dt_node_to_map(struct pinctrl_dev *pctldev, (*map)->data.mux.function = np->name; *num_maps =1 ; +mutex_unlock (&priv->mutex); +return 0 ; remove_function:
@@ -399,6 +407,9 @@ static int rza2_dt_node_to_map(struct pinctrl_dev *pctldev, remove_group:pinctrl_generic_remove_group (pctldev, gsel); +unlock: +mutex_unlock (&priv->mutex); +dev_err (priv->dev,"Unable to parse DT node %s\n" , np->name);return ret;
@@ -474,6 +485,8 @@ static int rza2_pinctrl_probe(struct platform_device *pdev)if (IS_ERR (priv->base))return PTR_ERR (priv->base); +mutex_init (&priv->mutex); +platform_set_drvdata (pdev, priv); priv->npins = (int)(uintptr_t)of_device_get_match_data(&pdev->dev) *
drivers/scsi/raid_class.c +0 -48
54 lines not on this page · raw message
drivers/scsi/snic/snic_disc.c +1 -2
@@ -317,12 +317,11 @@ snic_tgt_create(struct snic *snic, struct snic_tgt_id *tgtid)"Snic Tgt: device_add, with err = %d\n" , ret); -put_device (&tgt->dev);put_device (&snic->shost->shost_gendev);spin_lock_irqsave (snic->shost->host_lock, flags);list_del (&tgt->list);spin_unlock_irqrestore (snic->shost->host_lock, flags); -kfree (tgt); +put_device (&tgt->dev); tgt =NULL ;return tgt;
drivers/video/fbdev/core/sysimgblt.c +56 -8
99 lines not on this page · raw message
fs/dlm/lock.c +25 -28
117 lines not on this page · raw message
fs/dlm/plock.c +59 -30
142 lines not on this page · raw message
fs/dlm/recover.c +19 -20
@@ -732,10 +732,9 @@ void dlm_recovered_lock(struct dlm_rsb *r)static void recover_lvb (struct dlm_rsb *r) { -struct dlm_lkb *lkb, *high_lkb =NULL ; +struct dlm_lkb *big_lkb =NULL , *iter, *high_lkb =NULL ;uint32_t high_seq =0 ;int lock_lvb_exists =0 ; -int big_lock_exists =0 ;int lvblen = r->res_ls->ls_lvblen; if (!rsb_flag(r, RSB_NEW_MASTER2) &&
@@ -751,37 +750,37 @@ static void recover_lvb(struct dlm_rsb *r)/* we are the new master, so figure out if VALNOTVALID should be set, and set the rsb lvb from the best lkb available. */ -list_for_each_entry (lkb, &r->res_grantqueue, lkb_statequeue) { -if (!(lkb->lkb_exflags &DLM_LKF_VALBLK )) +list_for_each_entry (iter, &r->res_grantqueue, lkb_statequeue) { +if (!(iter->lkb_exflags &DLM_LKF_VALBLK ))continue ; lock_lvb_exists =1 ; -if (lkb->lkb_grmode >DLM_LOCK_CR ) { - big_lock_exists =1 ; +if (iter->lkb_grmode >DLM_LOCK_CR ) { + big_lkb = iter; goto setflag; } -if (((int )lkb->lkb_lvbseq - (int )high_seq) >=0 ) { - high_lkb = lkb; - high_seq = lkb->lkb_lvbseq; +if (((int )iter->lkb_lvbseq - (int )high_seq) >=0 ) { + high_lkb = iter; + high_seq = iter->lkb_lvbseq; } } -list_for_each_entry (lkb, &r->res_convertqueue, lkb_statequeue) { -if (!(lkb->lkb_exflags &DLM_LKF_VALBLK )) +list_for_each_entry (iter, &r->res_convertqueue, lkb_statequeue) { +if (!(iter->lkb_exflags &DLM_LKF_VALBLK ))continue ; lock_lvb_exists =1 ; -if (lkb->lkb_grmode >DLM_LOCK_CR ) { - big_lock_exists =1 ; +if (iter->lkb_grmode >DLM_LOCK_CR ) { + big_lkb = iter; goto setflag; } -if (((int )lkb->lkb_lvbseq - (int )high_seq) >=0 ) { - high_lkb = lkb; - high_seq = lkb->lkb_lvbseq; +if (((int )iter->lkb_lvbseq - (int )high_seq) >=0 ) { + high_lkb = iter; + high_seq = iter->lkb_lvbseq; } }
@@ -790,7 +789,7 @@ static void recover_lvb(struct dlm_rsb *r) goto out;/* lvb is invalidated if only NL/CR locks remain */ -if (!big_lock_exists) +if (!big_lkb)rsb_set_flag (r,RSB_VALNOTVALID );if (!r->res_lvbptr) {
@@ -799,9 +798,9 @@ static void recover_lvb(struct dlm_rsb *r) goto out; } -if (big_lock_exists) { - r->res_lvbseq = lkb->lkb_lvbseq; -memcpy (r->res_lvbptr, lkb->lkb_lvbptr, lvblen); +if (big_lkb) { + r->res_lvbseq = big_lkb->lkb_lvbseq; +memcpy (r->res_lvbptr, big_lkb->lkb_lvbptr, lvblen); }else if (high_lkb) { r->res_lvbseq = high_lkb->lkb_lvbseq;memcpy (r->res_lvbptr, high_lkb->lkb_lvbptr, lvblen);
fs/nfs/direct.c +16 -10
@@ -509,20 +509,26 @@ ssize_t nfs_file_direct_read(struct kiocb *iocb, struct iov_iter *iter,return result; } -static void -nfs_direct_join_group (struct list_head *list,struct inode *inode) +static void nfs_direct_join_group (struct list_head *list,struct inode *inode) { -struct nfs_page *req, *next; +struct nfs_page *req, *subreq;list_for_each_entry (req, list, wb_list) { -if (req->wb_head != req || req->wb_this_page == req) +if (req->wb_head != req)continue ; -for (next = req->wb_this_page; - next != req->wb_head; - next = next->wb_this_page) { -nfs_list_remove_request (next); -nfs_release_request (next); - } + subreq = req->wb_this_page; +if (subreq == req) +continue ; +do { +/* +* Remove subrequests from this list before freeing +* them in the call to nfs_join_page_group(). +*/ +if (!list_empty (&subreq->wb_list)) { +nfs_list_remove_request (subreq); +nfs_release_request (subreq); + } + }while ((subreq = subreq->wb_this_page) != req);nfs_join_page_group (req, inode); } }
fs/nfs/nfs4proc.c +10 -4
@@ -5864,9 +5864,8 @@ static ssize_t __nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t bu out_ok: ret = res.acl_len; out_free: -for (i =0 ; i < npages; i++) -if (pages[i]) -__free_page (pages[i]); +while (--i >=0 ) +__free_page (pages[i]);if (res.acl_scratch)__free_page (res.acl_scratch);kfree (pages);
@@ -7047,8 +7046,15 @@ static void nfs4_lock_done(struct rpc_task *task, void *calldata) }else if (!nfs4_update_lock_stateid (lsp, &data->res.stateid)) goto out_restart;break ; -case -NFS4ERR_BAD_STATEID :case -NFS4ERR_OLD_STATEID : +if (data->arg.new_lock_owner !=0 && +nfs4_refresh_open_old_stateid (&data->arg.open_stateid, + lsp->ls_state)) + goto out_restart; +if (nfs4_refresh_lock_old_stateid (&data->arg.lock_stateid, lsp)) + goto out_restart; + fallthrough; +case -NFS4ERR_BAD_STATEID :case -NFS4ERR_STALE_STATEID :case -NFS4ERR_EXPIRED :if (data->arg.new_lock_owner !=0 ) {
fs/nfsd/nfs4state.c +1 -1
@@ -1145,9 +1145,9 @@ static void revoke_delegation(struct nfs4_delegation *dp)WARN_ON (!list_empty (&dp->dl_recall_lru));if (clp->cl_minorversion) { +spin_lock (&clp->cl_lock); dp->dl_stid.sc_type =NFS4_REVOKED_DELEG_STID ;refcount_inc (&dp->dl_stid.sc_count); -spin_lock (&clp->cl_lock);list_add (&dp->dl_recall_lru, &clp->cl_revoked);spin_unlock (&clp->cl_lock); }
include/drm/drm_dp_helper.h +1 -1
@@ -1182,7 +1182,7 @@ u8 drm_dp_get_adjust_request_post_cursor(const u8 link_status[DP_LINK_STATUS_SIZ#define DP_BRANCH_OUI_HEADER_SIZE 0xc#define DP_RECEIVER_CAP_SIZE 0xf -#define DP_DSC_RECEIVER_CAP_SIZE 0xf +#define DP_DSC_RECEIVER_CAP_SIZE 0x10/* DSC Capabilities 0x60 through 0x6F */ #define EDP_PSR_RECEIVER_CAP_SIZE 2#define EDP_DISPLAY_CTL_CAP_SIZE 3
include/linux/ceph/msgr.h +8 -1
@@ -61,11 +61,18 @@ extern const char *ceph_entity_type_name(int type);* entity_addr -- network address */ struct ceph_entity_addr { -__le32 type; +__le32 type;/* CEPH_ENTITY_ADDR_TYPE_* */ __le32 nonce;/* unique id for process (e.g. pid) */ struct sockaddr_storage in_addr; } __attribute__ ((packed)); +static inline bool ceph_addr_equal_no_type (const struct ceph_entity_addr *lhs, +const struct ceph_entity_addr *rhs) +{ +return !memcmp (&lhs->in_addr, &rhs->in_addr,sizeof (lhs->in_addr)) && + lhs->nonce == rhs->nonce; +} +struct ceph_entity_inst {struct ceph_entity_name name;struct ceph_entity_addr addr;
include/linux/clk.h +40 -40
104 lines not on this page · raw message
include/linux/cpuset.h +8 -4
@@ -55,8 +55,10 @@ extern void cpuset_init_smp(void);extern void cpuset_force_rebuild (void );extern void cpuset_update_active_cpus (void );extern void cpuset_wait_for_hotplug (void ); -extern void cpuset_read_lock (void ); -extern void cpuset_read_unlock (void ); +extern void inc_dl_tasks_cs (struct task_struct *task); +extern void dec_dl_tasks_cs (struct task_struct *task); +extern void cpuset_lock (void ); +extern void cpuset_unlock (void );extern void cpuset_cpus_allowed (struct task_struct *p,struct cpumask *mask);extern void cpuset_cpus_allowed_fallback (struct task_struct *p);extern nodemask_t cpuset_mems_allowed (struct task_struct *p);
@@ -178,8 +180,10 @@ static inline void cpuset_update_active_cpus(void)static inline void cpuset_wait_for_hotplug (void ) { } -static inline void cpuset_read_lock (void ) { } -static inline void cpuset_read_unlock (void ) { } +static inline void inc_dl_tasks_cs (struct task_struct *task) { } +static inline void dec_dl_tasks_cs (struct task_struct *task) { } +static inline void cpuset_lock (void ) { } +static inline void cpuset_unlock (void ) { }static inline void cpuset_cpus_allowed (struct task_struct *p,struct cpumask *mask)
include/linux/raid_class.h +0 -4
@@ -77,7 +77,3 @@ DEFINE_RAID_ATTRIBUTE(enum raid_state, state)struct raid_template *raid_class_attach (struct raid_function_template *);void raid_class_release (struct raid_template *); - -int __must_check raid_component_add (struct raid_template *,struct device *, -struct device *); -
include/linux/sched.h +3 -1
@@ -1657,7 +1657,9 @@ current_restore_flags(unsigned long orig_flags, unsigned long flags) }extern int cpuset_cpumask_can_shrink (const struct cpumask *cur,const struct cpumask *trial); -extern int task_can_attach (struct task_struct *p,const struct cpumask *cs_effective_cpus); +extern int task_can_attach (struct task_struct *p); +extern int dl_bw_alloc (int cpu,u64 dl_bw); +extern void dl_bw_free (int cpu,u64 dl_bw);#ifdef CONFIG_SMP extern void do_set_cpus_allowed (struct task_struct *p,const struct cpumask *new_mask);extern int set_cpus_allowed_ptr (struct task_struct *p,const struct cpumask *new_mask);
include/net/bonding.h +1 -24
@@ -698,37 +698,14 @@ static inline struct slave *bond_slave_has_mac(struct bonding *bond, }/* Caller must hold rcu_read_lock() for read */ -static inline struct slave *bond_slave_has_mac_rcu (struct bonding *bond, -const u8 *mac) +static inline bool bond_slave_has_mac_rcu (struct bonding *bond,const u8 *mac) {struct list_head *iter;struct slave *tmp; -bond_for_each_slave_rcu (bond, tmp, iter) -if (ether_addr_equal_64bits (mac, tmp->dev->dev_addr)) -return tmp; - -return NULL ; -} - -/* Caller must hold rcu_read_lock() for read */ -static inline bool bond_slave_has_mac_rx (struct bonding *bond,const u8 *mac) -{ -struct list_head *iter; -struct slave *tmp; -struct netdev_hw_addr *ha; -bond_for_each_slave_rcu (bond, tmp, iter)if (ether_addr_equal_64bits (mac, tmp->dev->dev_addr))return true; - -if (netdev_uc_empty (bond->dev)) -return false; - -netdev_for_each_uc_addr (ha, bond->dev) -if (ether_addr_equal_64bits (mac, ha->addr)) -return true; -return false; }
include/net/rtnetlink.h +2 -2
@@ -166,8 +166,8 @@ struct net_device *rtnl_create_link(struct net *net, const char *ifname,int rtnl_delete_link (struct net_device *dev);int rtnl_configure_link (struct net_device *dev,const struct ifinfomsg *ifm); -int rtnl_nla_parse_ifla (struct nlattr **tb,const struct nlattr *head,int len, -struct netlink_ext_ack *exterr); +int rtnl_nla_parse_ifinfomsg (struct nlattr **tb,const struct nlattr *nla_peer, +struct netlink_ext_ack *exterr);struct net *rtnl_get_net_ns_capable (struct sock *sk,int netnsid);#define MODULE_ALIAS_RTNL_LINK (kind) MODULE_ALIAS("rtnl-link-" kind)
include/net/sock.h +4 -3
@@ -1233,6 +1233,7 @@ struct proto {/* * Pressure flag: try to collapse. * Technical note: it is used by multiple contexts non atomically. +* Make sure to use READ_ONCE()/WRITE_ONCE() for all reads/writes. * All the __sk_mem_schedule() is of this nature: accounting * is strict, actions are advisory and have some latency. */
@@ -1349,7 +1350,7 @@ static inline bool sk_has_memory_pressure(const struct sock *sk)static inline bool sk_under_global_memory_pressure (const struct sock *sk) {return sk->sk_prot->memory_pressure && - !!*sk->sk_prot->memory_pressure; + !!READ_ONCE (*sk->sk_prot->memory_pressure); }static inline bool sk_under_memory_pressure (const struct sock *sk)
@@ -1361,7 +1362,7 @@ static inline bool sk_under_memory_pressure(const struct sock *sk) mem_cgroup_under_socket_pressure(sk->sk_memcg))return true; -return !!*sk->sk_prot->memory_pressure; +return !!READ_ONCE (*sk->sk_prot->memory_pressure); } static inline long
@@ -1415,7 +1416,7 @@ proto_memory_pressure(struct proto *prot) {if (!prot->memory_pressure)return false; -return !!*prot->memory_pressure; +return !!READ_ONCE (*prot->memory_pressure); }
kernel/cgroup/cgroup.c +4 -0
@@ -56,6 +56,7 @@#include <linux/file.h> #include <linux/fs_parser.h> #include <linux/sched/cputime.h> +#include <linux/sched/deadline.h> #include <linux/psi.h> #include <net/sock.h>
@@ -6326,6 +6327,9 @@ void cgroup_exit(struct task_struct *tsk)list_add_tail (&tsk->cg_list, &cset->dying_tasks); cset->nr_tasks--; +if (dl_task (tsk)) +dec_dl_tasks_cs (tsk); +WARN_ON_ONCE (cgroup_task_frozen (tsk));if (unlikely (cgroup_task_freeze (tsk)))cgroup_update_frozen (task_dfl_cgroup (tsk));
kernel/cgroup/cpuset.c +115 -46
433 lines not on this page · raw message
kernel/sched/core.c +18 -23
91 lines not on this page · raw message
kernel/sched/deadline.c +53 -13
103 lines not on this page · raw message
kernel/sched/sched.h +1 -1
@@ -348,7 +348,7 @@ extern void __getparam_dl(struct task_struct *p, struct sched_attr *attr);extern bool __checkparam_dl (const struct sched_attr *attr);extern bool dl_param_changed (struct task_struct *p,const struct sched_attr *attr);extern int dl_cpuset_cpumask_can_shrink (const struct cpumask *cur,const struct cpumask *trial); -extern int dl_cpu_busy (int cpu,struct task_struct *p); +extern int dl_bw_check_overflow (int cpu);#ifdef CONFIG_CGROUP_SCHED
kernel/time/tick-sched.c +27 -2
@@ -148,6 +148,8 @@ static ktime_t tick_init_jiffy_update(void)return period; } +#define MAX_STALLED_JIFFIES 5 +static void tick_sched_do_timer (struct tick_sched *ts,ktime_t now) {int cpu =smp_processor_id ();
@@ -175,6 +177,21 @@ static void tick_sched_do_timer(struct tick_sched *ts, ktime_t now)if (tick_do_timer_cpu == cpu)tick_do_update_jiffies64 (now); +/* +* If jiffies update stalled for too long (timekeeper in stop_machine() +* or VMEXIT'ed for several msecs), force an update. +*/ +if (ts->last_tick_jiffies != jiffies) { + ts->stalled_jiffies =0 ; + ts->last_tick_jiffies =READ_ONCE (jiffies); + }else { +if (++ts->stalled_jiffies ==MAX_STALLED_JIFFIES ) { +tick_do_update_jiffies64 (now); + ts->stalled_jiffies =0 ; + ts->last_tick_jiffies =READ_ONCE (jiffies); + } + } +if (ts->inidle) ts->got_idle_tick =1 ; }
@@ -867,6 +884,8 @@ static void tick_nohz_stop_tick(struct tick_sched *ts, int cpu)if (unlikely (expires ==KTIME_MAX )) {if (ts->nohz_mode ==NOHZ_MODE_HIGHRES )hrtimer_cancel (&ts->sched_timer); +else +tick_program_event (KTIME_MAX ,1 );return ; }
@@ -1257,9 +1276,15 @@ static void tick_nohz_handler(struct clock_event_device *dev)tick_sched_do_timer (ts, now);tick_sched_handle (ts, regs); -/* No need to reprogram if we are running tickless */ -if (unlikely (ts->tick_stopped)) +if (unlikely (ts->tick_stopped)) { +/* +* The clockevent device is not reprogrammed, so change the +* clock event device to ONESHOT_STOPPED to avoid spurious +* interrupts on devices which might not be truly one shot. +*/ +tick_program_event (KTIME_MAX ,1 );return ; + }hrtimer_forward (&ts->sched_timer, now,TICK_NSEC );tick_program_event (hrtimer_get_expires (&ts->sched_timer),1 );
kernel/time/tick-sched.h +4 -0
@@ -49,6 +49,8 @@ enum tick_nohz_mode {* @timer_expires_base: Base time clock monotonic for @timer_expires * @next_timer: Expiry time of next expiring timer for debugging purpose only * @tick_dep_mask: Tick dependency mask - is set, if someone needs the tick +* @last_tick_jiffies: Value of jiffies seen on last tick +* @stalled_jiffies: Number of stalled jiffies detected across ticks */ struct tick_sched {struct hrtimer sched_timer;
@@ -77,6 +79,8 @@ struct tick_sched {u64 next_timer;ktime_t idle_expires;atomic_t tick_dep_mask; +unsigned long last_tick_jiffies; +unsigned int stalled_jiffies; };extern struct tick_sched *tick_get_tick_sched (int cpu);
kernel/torture.c +1 -1
@@ -788,7 +788,7 @@ void torture_kthread_stopping(char *title)VERBOSE_TOROUT_STRING (buf);while (!kthread_should_stop ()) {torture_shutdown_absorb (title); -schedule_timeout_uninterruptible (1 ); +schedule_timeout_uninterruptible (HZ /20 ); } }EXPORT_SYMBOL_GPL (torture_kthread_stopping);
kernel/trace/trace.c +14 -1
@@ -3782,8 +3782,15 @@ static void *s_start(struct seq_file *m, loff_t *pos)* will point to the same string as current_trace->name. */ mutex_lock (&trace_types_lock); -if (unlikely (tr->current_trace && iter->trace->name != tr->current_trace->name)) +if (unlikely (tr->current_trace && iter->trace->name != tr->current_trace->name)) { +/* Close iter->trace before switching to the new current tracer */ +if (iter->trace->close) + iter->trace->close (iter); *iter->trace = *tr->current_trace; +/* Reopen the new current tracer */ +if (iter->trace->open) + iter->trace->open (iter); + }mutex_unlock (&trace_types_lock);#ifdef CONFIG_TRACER_MAX_TRACE
@@ -4843,11 +4850,17 @@ int tracing_set_cpumask(struct trace_array *tr, !cpumask_test_cpu(cpu, tracing_cpumask_new)) {atomic_inc (&per_cpu_ptr (tr->array_buffer.data, cpu)->disabled);ring_buffer_record_disable_cpu (tr->array_buffer.buffer, cpu); +#ifdef CONFIG_TRACER_MAX_TRACE +ring_buffer_record_disable_cpu (tr->max_buffer.buffer, cpu); +#endif }if (!cpumask_test_cpu (cpu, tr->tracing_cpumask) &&cpumask_test_cpu (cpu, tracing_cpumask_new)) {atomic_dec (&per_cpu_ptr (tr->array_buffer.data, cpu)->disabled);ring_buffer_record_enable_cpu (tr->array_buffer.buffer, cpu); +#ifdef CONFIG_TRACER_MAX_TRACE +ring_buffer_record_enable_cpu (tr->max_buffer.buffer, cpu); +#endif } }arch_spin_unlock (&tr->max_lock);
kernel/trace/trace_irqsoff.c +2 -1
@@ -228,7 +228,8 @@ static void irqsoff_trace_open(struct trace_iterator *iter) {if (is_graph (iter->tr))graph_trace_open (iter); - +else + iter->private =NULL ; }static void irqsoff_trace_close (struct trace_iterator *iter)
kernel/trace/trace_sched_wakeup.c +2 -0
@@ -171,6 +171,8 @@ static void wakeup_trace_open(struct trace_iterator *iter) {if (is_graph (iter->tr))graph_trace_open (iter); +else + iter->private =NULL ; }static void wakeup_trace_close (struct trace_iterator *iter)
lib/clz_ctz.c +6 -26
@@ -28,36 +28,16 @@ int __weak __clzsi2(int val) }EXPORT_SYMBOL (__clzsi2); -int __weak __clzdi2 (long val); -int __weak __ctzdi2 (long val); -#if BITS_PER_LONG ==32 - -int __weak __clzdi2 (long val) +int __weak __clzdi2 (u64 val); +int __weak __clzdi2 (u64 val) { -return 32 -fls ((int )val); +return 64 -fls64 (val); }EXPORT_SYMBOL (__clzdi2); -int __weak __ctzdi2 (long val) +int __weak __ctzdi2 (u64 val); +int __weak __ctzdi2 (u64 val) { -return __ffs ((u32 )val); +return __ffs64 (val); }EXPORT_SYMBOL (__ctzdi2); - -#elif BITS_PER_LONG ==64 - -int __weak __clzdi2 (long val) -{ -return 64 -fls64 ((u64 )val); -} -EXPORT_SYMBOL (__clzdi2); - -int __weak __ctzdi2 (long val) -{ -return __ffs64 ((u64 )val); -} -EXPORT_SYMBOL (__ctzdi2); - -#else -#error BITS_PER_LONG not 32 or 64 -#endif
lib/radix-tree.c +0 -1
@@ -1133,7 +1133,6 @@ static void set_iter_tags(struct radix_tree_iter *iter,void __rcu **radix_tree_iter_resume (void __rcu **slot,struct radix_tree_iter *iter) { - slot++; iter->index =__radix_tree_iter_add (iter,1 ); iter->next_index = iter->index; iter->tags =0 ;
mm/memory-failure.c +63 -73
183 lines not on this page · raw message
mm/vmalloc.c +4 -0
@@ -2453,6 +2453,10 @@ void *vmap_pfn(unsigned long *pfns, unsigned int count, pgprot_t prot)free_vm_area (area);return NULL ; } + +flush_cache_vmap ((unsigned long )area->addr, + (unsigned long )area->addr + count *PAGE_SIZE ); +return area->addr; }EXPORT_SYMBOL_GPL (vmap_pfn);
net/batman-adv/bat_v_elp.c +2 -1
@@ -509,7 +509,7 @@ int batadv_v_elp_packet_recv(struct sk_buff *skb,struct batadv_priv *bat_priv =netdev_priv (if_incoming->soft_iface);struct batadv_elp_packet *elp_packet;struct batadv_hard_iface *primary_if; -struct ethhdr *ethhdr = (struct ethhdr *)skb_mac_header (skb); +struct ethhdr *ethhdr;bool res;int ret =NET_RX_DROP ;
@@ -517,6 +517,7 @@ int batadv_v_elp_packet_recv(struct sk_buff *skb,if (!res) goto free_skb; + ethhdr =eth_hdr (skb);if (batadv_is_my_mac (bat_priv, ethhdr->h_source)) goto free_skb;
net/batman-adv/bat_v_ogm.c +5 -2
@@ -123,8 +123,10 @@ static void batadv_v_ogm_send_to_if(struct sk_buff *skb, {struct batadv_priv *bat_priv =netdev_priv (hard_iface->soft_iface); -if (hard_iface->if_status !=BATADV_IF_ACTIVE ) +if (hard_iface->if_status !=BATADV_IF_ACTIVE ) { +kfree_skb (skb);return ; + }batadv_inc_counter (bat_priv,BATADV_CNT_MGMT_TX ); batadv_add_counter(bat_priv, BATADV_CNT_MGMT_TX_BYTES,
@@ -998,7 +1000,7 @@ int batadv_v_ogm_packet_recv(struct sk_buff *skb, {struct batadv_priv *bat_priv =netdev_priv (if_incoming->soft_iface);struct batadv_ogm2_packet *ogm_packet; -struct ethhdr *ethhdr =eth_hdr (skb); +struct ethhdr *ethhdr;int ogm_offset;u8 *packet_pos;int ret =NET_RX_DROP ;
@@ -1012,6 +1014,7 @@ int batadv_v_ogm_packet_recv(struct sk_buff *skb,if (!batadv_check_management_packet (skb, if_incoming,BATADV_OGM2_HLEN )) goto free_skb; + ethhdr =eth_hdr (skb);if (batadv_is_my_mac (bat_priv, ethhdr->h_source)) goto free_skb;
net/batman-adv/hard-interface.c +13 -1
@@ -632,7 +632,19 @@ int batadv_hardif_min_mtu(struct net_device *soft_iface)*/ void batadv_update_min_mtu (struct net_device *soft_iface) { - soft_iface->mtu =batadv_hardif_min_mtu (soft_iface); +struct batadv_priv *bat_priv =netdev_priv (soft_iface); +int limit_mtu; +int mtu; + + mtu =batadv_hardif_min_mtu (soft_iface); + +if (bat_priv->mtu_set_by_user) + limit_mtu = bat_priv->mtu_set_by_user; +else + limit_mtu =ETH_DATA_LEN ; + + mtu =min (mtu, limit_mtu); +dev_set_mtu (soft_iface, mtu);/* Check if the local translate table should be cleaned up to match a * new (and smaller) MTU.
net/batman-adv/netlink.c +3 -0
@@ -496,7 +496,10 @@ static int batadv_netlink_set_mesh(struct sk_buff *skb, struct genl_info *info) attr = info->attrs[BATADV_ATTR_FRAGMENTATION_ENABLED ];atomic_set (&bat_priv->fragmentation, !!nla_get_u8 (attr)); + +rtnl_lock ();batadv_update_min_mtu (bat_priv->soft_iface); +rtnl_unlock (); }if (info->attrs[BATADV_ATTR_GW_BANDWIDTH_DOWN ]) {
net/batman-adv/soft-interface.c +3 -0
@@ -156,11 +156,14 @@ static int batadv_interface_set_mac_addr(struct net_device *dev, void *p)static int batadv_interface_change_mtu (struct net_device *dev,int new_mtu) { +struct batadv_priv *bat_priv =netdev_priv (dev); +/* check ranges */ if (new_mtu <68 || new_mtu >batadv_hardif_min_mtu (dev))return -EINVAL ; dev->mtu = new_mtu; + bat_priv->mtu_set_by_user = new_mtu;return 0 ; }
net/batman-adv/translation-table.c +0 -1
@@ -775,7 +775,6 @@ bool batadv_tt_local_add(struct net_device *soft_iface, const u8 *addr,if (roamed_back) {batadv_tt_global_free (bat_priv, tt_global,"Roaming canceled" ); - tt_global =NULL ; }else {/* The global entry has to be marked as ROAMING and * has to be kept for consistency purpose
net/batman-adv/types.h +6 -0
@@ -1566,6 +1566,12 @@ struct batadv_priv {/** @soft_iface: net device which holds this struct as private data */ struct net_device *soft_iface; +/** +* @mtu_set_by_user: MTU was set once by user +* protected by rtnl_lock +*/ +int mtu_set_by_user; +/** * @bat_counters: mesh internal traffic statistic counters (see * batadv_counters)
net/ceph/mon_client.c +4 -2
@@ -96,9 +96,11 @@ int ceph_monmap_contains(struct ceph_monmap *m, struct ceph_entity_addr *addr) {int i; -for (i =0 ; i < m->num_mon; i++) -if (memcmp (addr, &m->mon_inst[i].addr,sizeof (*addr)) ==0 ) +for (i =0 ; i < m->num_mon; i++) { +if (ceph_addr_equal_no_type (addr, &m->mon_inst[i].addr))return 1 ; + } +return 0 ; }
net/core/rtnetlink.c +35 -8
73 lines not on this page · raw message
net/dccp/proto.c +12 -8
@@ -324,11 +324,15 @@ EXPORT_SYMBOL_GPL(dccp_disconnect);__poll_t dccp_poll (struct file *file,struct socket *sock,poll_table *wait) { -__poll_t mask;struct sock *sk = sock->sk; +__poll_t mask; +u8 shutdown; +int state;sock_poll_wait (file, sock, wait); -if (sk->sk_state ==DCCP_LISTEN ) + + state =inet_sk_state_load (sk); +if (state ==DCCP_LISTEN )return inet_csk_listen_poll (sk);/* Socket is not locked. We are protected from async events
@@ -337,20 +341,21 @@ __poll_t dccp_poll(struct file *file, struct socket *sock,*/ mask =0 ; -if (sk->sk_err) +if (READ_ONCE (sk->sk_err)) mask =EPOLLERR ; + shutdown =READ_ONCE (sk->sk_shutdown); -if (sk->sk_shutdown ==SHUTDOWN_MASK || sk->sk_state ==DCCP_CLOSED ) +if (shutdown ==SHUTDOWN_MASK || state ==DCCP_CLOSED ) mask |=EPOLLHUP ; -if (sk->sk_shutdown &RCV_SHUTDOWN ) +if (shutdown &RCV_SHUTDOWN ) mask |=EPOLLIN |EPOLLRDNORM |EPOLLRDHUP ;/* Connected? */ -if ((1 << sk->sk_state) & ~(DCCPF_REQUESTING |DCCPF_RESPOND )) { +if ((1 << state) & ~(DCCPF_REQUESTING |DCCPF_RESPOND )) {if (atomic_read (&sk->sk_rmem_alloc) >0 ) mask |=EPOLLIN |EPOLLRDNORM ; -if (!(sk->sk_shutdown &SEND_SHUTDOWN )) { +if (!(shutdown &SEND_SHUTDOWN )) {if (sk_stream_is_writeable (sk)) { mask |=EPOLLOUT |EPOLLWRNORM ; }else {/* send SIGIO later */
@@ -368,7 +373,6 @@ __poll_t dccp_poll(struct file *file, struct socket *sock, }return mask; } -EXPORT_SYMBOL_GPL (dccp_poll);int dccp_ioctl (struct sock *sk,int cmd,unsigned long arg)
net/netfilter/nft_set_pipapo.c +10 -3
@@ -901,12 +901,14 @@ static void pipapo_lt_bits_adjust(struct nft_pipapo_field *f)static int pipapo_insert (struct nft_pipapo_field *f,const uint8_t *k,int mask_bits) { -int rule = f->rules++, group, ret, bit_offset =0 ; +int rule = f->rules, group, ret, bit_offset =0 ; - ret =pipapo_resize (f, f->rules -1 , f->rules); + ret =pipapo_resize (f, f->rules, f->rules +1 );
Lines of this file are not shown. View the raw message.
net/sched/sch_api.c +40 -13
53 lines not on this page · raw message
sound/core/pcm_memory.c +36 -8
44 lines not on this page · raw message
sound/soc/intel/boards/sof_sdw_common.h +0 -5
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.