Skip to contentSkip to conversation

Linux 5.10.25

DISCUSSION Greg Kroah-Hartman 3 participants 7 messages Mar 20, 2021 – Mar 22, 2021 Stable branch

lore
Share & tools
lore
author maintainer
#1 lore raw
In reply to Greg Kroah-Hartman
Makefile +1 -1
index 3a435c928e75..6858425cbe6c 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 10
-SUBLEVEL = 24
+SUBLEVEL = 25
 EXTRAVERSION =
 NAME = Dare mighty things
 
arch/x86/crypto/aesni-intel_asm.S +79 -54

238 lines not on this page · raw message

arch/x86/crypto/aesni-intel_avx-x86_64.S +10 -10
index 5fee47956f3b..2cf8e94d986a 100644
@@ -369,7 +369,7 @@ _initial_num_blocks_is_0\@:
 
 
 _initial_blocks_encrypted\@:
-        cmp     $0, %r13
+        test    %r13, %r13
         je      _zero_cipher_left\@
 
         sub     $128, %r13
@@ -528,7 +528,7 @@ _multiple_of_16_bytes\@:
         vmovdqu HashKey(arg2), %xmm13
 
         mov PBlockLen(arg2), %r12
-        cmp $0, %r12
+        test %r12, %r12
         je _partial_done\@
 
 	#GHASH computation for the last <16 Byte block
@@ -573,7 +573,7 @@ _T_8\@:
         add     $8, %r10
         sub     $8, %r11
         vpsrldq $8, %xmm9, %xmm9
-        cmp     $0, %r11
+        test    %r11, %r11
         je     _return_T_done\@
 _T_4\@:
         vmovd   %xmm9, %eax
@@ -581,7 +581,7 @@ _T_4\@:
         add     $4, %r10
         sub     $4, %r11
         vpsrldq     $4, %xmm9, %xmm9
-        cmp     $0, %r11
+        test    %r11, %r11
         je     _return_T_done\@
 _T_123\@:
         vmovd     %xmm9, %eax
@@ -625,7 +625,7 @@ _get_AAD_blocks\@:
 	cmp     $16, %r11
 	jge     _get_AAD_blocks\@
 	vmovdqu \T8, \T7
-	cmp     $0, %r11
+	test    %r11, %r11
 	je      _get_AAD_done\@
 
 	vpxor   \T7, \T7, \T7
@@ -644,7 +644,7 @@ _get_AAD_rest8\@:
 	vpxor   \T1, \T7, \T7
 	jmp     _get_AAD_rest8\@
 _get_AAD_rest4\@:
-	cmp     $0, %r11
+	test    %r11, %r11
 	jle      _get_AAD_rest0\@
 	mov     (%r10), %eax
 	movq    %rax, \T1
@@ -749,7 +749,7 @@ _done_read_partial_block_\@:
 .macro PARTIAL_BLOCK GHASH_MUL CYPH_PLAIN_OUT PLAIN_CYPH_IN PLAIN_CYPH_LEN DATA_OFFSET \
         AAD_HASH ENC_DEC
         mov 	PBlockLen(arg2), %r13
-        cmp	$0, %r13
+        test	%r13, %r13
         je	_partial_block_done_\@	# Leave Macro if no partial blocks
         # Read in input data without over reading
         cmp	$16, \PLAIN_CYPH_LEN
@@ -801,7 +801,7 @@ _no_extra_mask_1_\@:
         vpshufb	%xmm2, %xmm3, %xmm3
         vpxor	%xmm3, \AAD_HASH, \AAD_HASH
 
-        cmp	$0, %r10
+        test	%r10, %r10
         jl	_partial_incomplete_1_\@
 
         # GHASH computation for the last <16 Byte block
@@ -836,7 +836,7 @@ _no_extra_mask_2_\@:
         vpshufb %xmm2, %xmm9, %xmm9
         vpxor	%xmm9, \AAD_HASH, \AAD_HASH
 
-        cmp	$0, %r10
+        test	%r10, %r10
         jl	_partial_incomplete_2_\@
 
         # GHASH computation for the last <16 Byte block
@@ -856,7 +856,7 @@ _encode_done_\@:
         vpshufb	%xmm2, %xmm9, %xmm9
 .endif
         # output encrypted Bytes
-        cmp	$0, %r10
+        test	%r10, %r10
         jl	_partial_fill_\@
         mov	%r13, %r12
         mov	$16, %r13
arch/x86/crypto/aesni-intel_glue.c +14 -11
index f9a1d98e7534..be891fdf8d17 100644
@@ -97,6 +97,12 @@ asmlinkage void aesni_cbc_dec(struct crypto_aes_ctx *ctx, u8 *out,
 #define AVX_GEN2_OPTSIZE 640
 #define AVX_GEN4_OPTSIZE 4096
 
+asmlinkage void aesni_xts_encrypt(const struct crypto_aes_ctx *ctx, u8 *out,
+				  const u8 *in, unsigned int len, u8 *iv);
+
+asmlinkage void aesni_xts_decrypt(const struct crypto_aes_ctx *ctx, u8 *out,
+				  const u8 *in, unsigned int len, u8 *iv);
+
 #ifdef CONFIG_X86_64
 
 static void (*aesni_ctr_enc_tfm)(struct crypto_aes_ctx *ctx, u8 *out,
@@ -104,9 +110,6 @@ static void (*aesni_ctr_enc_tfm)(struct crypto_aes_ctx *ctx, u8 *out,
 asmlinkage void aesni_ctr_enc(struct crypto_aes_ctx *ctx, u8 *out,
 			      const u8 *in, unsigned int len, u8 *iv);
 
-asmlinkage void aesni_xts_crypt8(const struct crypto_aes_ctx *ctx, u8 *out,
-				 const u8 *in, bool enc, le128 *iv);
-
 /* asmlinkage void aesni_gcm_enc()
  * void *ctx,  AES Key schedule. Starts on a 16 byte boundary.
  * struct gcm_context_data.  May be uninitialized.
@@ -547,14 +550,14 @@ static void aesni_xts_dec(const void *ctx, u8 *dst, const u8 *src, le128 *iv)
 	glue_xts_crypt_128bit_one(ctx, dst, src, iv, aesni_dec);
 }
 
-static void aesni_xts_enc8(const void *ctx, u8 *dst, const u8 *src, le128 *iv)
+static void aesni_xts_enc32(const void *ctx, u8 *dst, const u8 *src, le128 *iv)
 {
-	aesni_xts_crypt8(ctx, dst, src, true, iv);
+	aesni_xts_encrypt(ctx, dst, src, 32 * AES_BLOCK_SIZE, (u8 *)iv);
 }
 
-static void aesni_xts_dec8(const void *ctx, u8 *dst, const u8 *src, le128 *iv)
+static void aesni_xts_dec32(const void *ctx, u8 *dst, const u8 *src, le128 *iv)
 {
-	aesni_xts_crypt8(ctx, dst, src, false, iv);
+	aesni_xts_decrypt(ctx, dst, src, 32 * AES_BLOCK_SIZE, (u8 *)iv);
 }
 
 static const struct common_glue_ctx aesni_enc_xts = {
@@ -562,8 +565,8 @@ static const struct common_glue_ctx aesni_enc_xts = {
 	.fpu_blocks_limit = 1,
 
 	.funcs = { {
-		.num_blocks = 8,
-		.fn_u = { .xts = aesni_xts_enc8 }
+		.num_blocks = 32,
+		.fn_u = { .xts = aesni_xts_enc32 }
 	}, {
 		.num_blocks = 1,
 		.fn_u = { .xts = aesni_xts_enc }
@@ -575,8 +578,8 @@ static const struct common_glue_ctx aesni_dec_xts = {
 	.fpu_blocks_limit = 1,
 
 	.funcs = { {
-		.num_blocks = 8,
-		.fn_u = { .xts = aesni_xts_dec8 }
+		.num_blocks = 32,
+		.fn_u = { .xts = aesni_xts_dec32 }
 	}, {
 		.num_blocks = 1,
 		.fn_u = { .xts = aesni_xts_dec }
drivers/infiniband/ulp/srp/ib_srp.c +45 -65

133 lines not on this page · raw message

drivers/net/dsa/b53/b53_common.c +18 -0
index 95c7fa171e35..f504b6858ed2 100644
@@ -510,6 +510,19 @@ void b53_imp_vlan_setup(struct dsa_switch *ds, int cpu_port)
 }
 EXPORT_SYMBOL(b53_imp_vlan_setup);
 
+static void b53_port_set_learning(struct b53_device *dev, int port,
+				  bool learning)
+{
+	u16 reg;
+
+	b53_read16(dev, B53_CTRL_PAGE, B53_DIS_LEARNING, &reg);
+	if (learning)
+		reg &= ~BIT(port);
+	else
+		reg |= BIT(port);
+	b53_write16(dev, B53_CTRL_PAGE, B53_DIS_LEARNING, reg);
+}
+
 int b53_enable_port(struct dsa_switch *ds, int port, struct phy_device *phy)
 {
 	struct b53_device *dev = ds->priv;
@@ -523,6 +536,7 @@ int b53_enable_port(struct dsa_switch *ds, int port, struct phy_device *phy)
 	cpu_port = dsa_to_port(ds, port)->cpu_dp->index;
 
 	b53_br_egress_floods(ds, port, true, true);
+	b53_port_set_learning(dev, port, false);
 
 	if (dev->ops->irq_enable)
 		ret = dev->ops->irq_enable(dev, port);
@@ -656,6 +670,7 @@ static void b53_enable_cpu_port(struct b53_device *dev, int port)
 	b53_brcm_hdr_setup(dev->ds, port);
 
 	b53_br_egress_floods(dev->ds, port, true, true);
+	b53_port_set_learning(dev, port, false);
 }
 
 static void b53_enable_mib(struct b53_device *dev)
@@ -1839,6 +1854,8 @@ int b53_br_join(struct dsa_switch *ds, int port, struct net_device *br)
 	b53_write16(dev, B53_PVLAN_PAGE, B53_PVLAN_PORT_MASK(port), pvlan);
 	dev->ports[port].vlan_ctl_mask = pvlan;
 
+	b53_port_set_learning(dev, port, true);
+
 	return 0;
 }
 EXPORT_SYMBOL(b53_br_join);
@@ -1886,6 +1903,7 @@ void b53_br_leave(struct dsa_switch *ds, int port, struct net_device *br)
 		vl->untag |= BIT(port) | BIT(cpu_port);
 		b53_set_vlan_entry(dev, pvid, vl);
 	}
+	b53_port_set_learning(dev, port, false);
 }
 EXPORT_SYMBOL(b53_br_leave);
 
drivers/net/dsa/b53/b53_regs.h +1 -0
index c90985c294a2..b2c539a42154 100644
@@ -115,6 +115,7 @@
 #define B53_UC_FLOOD_MASK		0x32
 #define B53_MC_FLOOD_MASK		0x34
 #define B53_IPMC_FLOOD_MASK		0x36
+#define B53_DIS_LEARNING		0x3c
 
 /*
  * Override Ports 0-7 State on devices with xMII interfaces (8 bit)
drivers/net/dsa/bcm_sf2.c +1 -14
index 445226720ff2..edb0a1027b38 100644
@@ -222,23 +222,10 @@ static int bcm_sf2_port_setup(struct dsa_switch *ds, int port,
 	reg &= ~P_TXQ_PSM_VDD(port);
 	core_writel(priv, reg, CORE_MEM_PSM_VDD_CTRL);
 
-	/* Enable learning */
-	reg = core_readl(priv, CORE_DIS_LEARN);
-	reg &= ~BIT(port);
-	core_writel(priv, reg, CORE_DIS_LEARN);
-
 	/* Enable Broadcom tags for that port if requested */
-	if (priv->brcm_tag_mask & BIT(port)) {
+	if (priv->brcm_tag_mask & BIT(port))
 		b53_brcm_hdr_setup(ds, port);
 
-		/* Disable learning on ASP port */
-		if (port == 7) {
-			reg = core_readl(priv, CORE_DIS_LEARN);
-			reg |= BIT(port);
-			core_writel(priv, reg, CORE_DIS_LEARN);
-		}
-	}
-
 	/* Configure Traffic Class to QoS mapping, allow each priority to map
 	 * to a different queue number
 	 */
fs/fuse/fuse_i.h +1 -0
index 404d66f01e8d..d64aee04e59a 100644
@@ -862,6 +862,7 @@ static inline u64 fuse_get_attr_version(struct fuse_conn *fc)
 
 static inline void fuse_make_bad(struct inode *inode)
 {
+	remove_inode_hash(inode);
 	set_bit(FUSE_I_BAD, &get_fuse_inode(inode)->state);
 }
 
fs/locks.c +0 -3
index 1f84a03601fe..32c948fe2944 100644
@@ -1808,9 +1808,6 @@ check_conflicting_open(struct file *filp, const long arg, int flags)
 
 	if (flags & FL_LAYOUT)
 		return 0;
-	if (flags & FL_DELEG)
-		/* We leave these checks to the caller. */
-		return 0;
 
 	if (arg == F_RDLCK)
 		return inode_is_open_for_write(inode) ? -EAGAIN : 0;
fs/nfsd/nfs4state.c +14 -39

82 lines not on this page · raw message

kernel/bpf/verifier.c +21 -12
index 6c2e4947beae..9a1aba2d0073 100644
@@ -5333,10 +5333,14 @@ static int retrieve_ptr_limit(const struct bpf_reg_state *ptr_reg,
 {
 	bool mask_to_left = (opcode == BPF_ADD &&  off_is_neg) ||
 			    (opcode == BPF_SUB && !off_is_neg);
-	u32 off;
+	u32 off, max;
 
 	switch (ptr_reg->type) {
 	case PTR_TO_STACK:
+		/* Offset 0 is out-of-bounds, but acceptable start for the
+		 * left direction, see BPF_REG_FP.
+		 */
+		max = MAX_BPF_STACK + mask_to_left;
 		/* Indirect variable offset stack access is prohibited in
 		 * unprivileged mode so it's not handled here.
 		 */
@@ -5344,16 +5348,17 @@ static int retrieve_ptr_limit(const struct bpf_reg_state *ptr_reg,
 		if (mask_to_left)
 			*ptr_limit = MAX_BPF_STACK + off;
 		else
-			*ptr_limit = -off;
-		return 0;
+			*ptr_limit = -off - 1;
+		return *ptr_limit >= max ? -ERANGE : 0;
 	case PTR_TO_MAP_VALUE:
+		max = ptr_reg->map_ptr->value_size;
 		if (mask_to_left) {
 			*ptr_limit = ptr_reg->umax_value + ptr_reg->off;
 		} else {
 			off = ptr_reg->smin_value + ptr_reg->off;
-			*ptr_limit = ptr_reg->map_ptr->value_size - off;
+			*ptr_limit = ptr_reg->map_ptr->value_size - off - 1;
 		}
-		return 0;
+		return *ptr_limit >= max ? -ERANGE : 0;
 	default:
 		return -EINVAL;
 	}
@@ -5406,6 +5411,7 @@ static int sanitize_ptr_alu(struct bpf_verifier_env *env,
 	u32 alu_state, alu_limit;
 	struct bpf_reg_state tmp;
 	bool ret;
+	int err;
 
 	if (can_skip_alu_sanitation(env, insn))
 		return 0;
@@ -5421,10 +5427,13 @@ static int sanitize_ptr_alu(struct bpf_verifier_env *env,
 	alu_state |= ptr_is_dst_reg ?
 		     BPF_ALU_SANITIZE_SRC : BPF_ALU_SANITIZE_DST;
 
-	if (retrieve_ptr_limit(ptr_reg, &alu_limit, opcode, off_is_neg))
-		return 0;
-	if (update_alu_sanitation_state(aux, alu_state, alu_limit))
-		return -EACCES;
+	err = retrieve_ptr_limit(ptr_reg, &alu_limit, opcode, off_is_neg);
+	if (err < 0)
+		return err;
+
+	err = update_alu_sanitation_state(aux, alu_state, alu_limit);
+	if (err < 0)
+		return err;
 do_sim:
 	/* Simulate and find potential out-of-bounds access under
 	 * speculative execution from truncation as a result of
@@ -5540,7 +5549,7 @@ static int adjust_ptr_min_max_vals(struct bpf_verifier_env *env,
 	case BPF_ADD:
 		ret = sanitize_ptr_alu(env, insn, ptr_reg, dst_reg, smin_val < 0);
 		if (ret < 0) {
-			verbose(env, "R%d tried to add from different maps or paths\n", dst);
+			verbose(env, "R%d tried to add from different maps, paths, or prohibited types\n", dst);
 			return ret;
 		}
 		/* We can take a fixed offset as long as it doesn't overflow
@@ -5595,7 +5604,7 @@ static int adjust_ptr_min_max_vals(struct bpf_verifier_env *env,
 	case BPF_SUB:
 		ret = sanitize_ptr_alu(env, insn, ptr_reg, dst_reg, smin_val < 0);
 		if (ret < 0) {
-			verbose(env, "R%d tried to sub from different maps or paths\n", dst);
+			verbose(env, "R%d tried to sub from different maps, paths, or prohibited types\n", dst);
 			return ret;
 		}
 		if (dst_reg == off_reg) {
@@ -10942,7 +10951,7 @@ static int fixup_bpf_calls(struct bpf_verifier_env *env)
 			off_reg = issrc ? insn->src_reg : insn->dst_reg;
 			if (isneg)
 				*patch++ = BPF_ALU64_IMM(BPF_MUL, off_reg, -1);
-			*patch++ = BPF_MOV32_IMM(BPF_REG_AX, aux->alu_limit - 1);
+			*patch++ = BPF_MOV32_IMM(BPF_REG_AX, aux->alu_limit);
 			*patch++ = BPF_ALU64_REG(BPF_SUB, BPF_REG_AX, off_reg);
 			*patch++ = BPF_ALU64_REG(BPF_OR, BPF_REG_AX, off_reg);
 			*patch++ = BPF_ALU64_IMM(BPF_NEG, BPF_REG_AX, 0);
sound/usb/endpoint.c +0 -3
index e2f9ce2f5b8b..8527267725bb 100644
@@ -576,9 +576,6 @@ static int deactivate_urbs(struct snd_usb_endpoint *ep, bool force)
 {
 	unsigned int i;
 
-	if (!force && atomic_read(&ep->chip->shutdown)) /* to be sure... */
-		return -EBADFD;
-
 	clear_bit(EP_FLAG_RUNNING, &ep->flags);
 
 	INIT_LIST_HEAD(&ep->ready_playback_urbs);
sound/usb/pcm.c +1 -4
index 1b08f52ef86f..f4494d054917 100644
@@ -280,10 +280,7 @@ static int snd_usb_pcm_sync_stop(struct snd_pcm_substream *substream)
 {
 	struct snd_usb_substream *subs = substream->runtime->private_data;
 
-	if (!snd_usb_lock_shutdown(subs->stream->chip)) {
-		sync_pending_stops(subs);
-		snd_usb_unlock_shutdown(subs->stream->chip);
-	}
+	sync_pending_stops(subs);
 	return 0;
 }
 
tools/testing/selftests/bpf/verifier/bounds_deduction.c +19 -8
index 1fd07a4f27ac..c162498a64fc 100644
@@ -6,8 +6,9 @@
 		BPF_ALU64_REG(BPF_SUB, BPF_REG_0, BPF_REG_1),
 		BPF_EXIT_INSN(),
 	},
-	.result = REJECT,
+	.errstr_unpriv = "R0 tried to sub from different maps, paths, or prohibited types",
 	.errstr = "R0 tried to subtract pointer from scalar",
+	.result = REJECT,
 },
 {
 	"check deducing bounds from const, 2",
@@ -20,6 +21,8 @@
 		BPF_ALU64_REG(BPF_SUB, BPF_REG_1, BPF_REG_0),
 		BPF_EXIT_INSN(),
 	},
+	.errstr_unpriv = "R1 tried to sub from different maps, paths, or prohibited types",
+	.result_unpriv = REJECT,
 	.result = ACCEPT,
 	.retval = 1,
 },
@@ -31,8 +34,9 @@
 		BPF_ALU64_REG(BPF_SUB, BPF_REG_0, BPF_REG_1),
 		BPF_EXIT_INSN(),
 	},
-	.result = REJECT,
+	.errstr_unpriv = "R0 tried to sub from different maps, paths, or prohibited types",
 	.errstr = "R0 tried to subtract pointer from scalar",
+	.result = REJECT,
 },
 {
 	"check deducing bounds from const, 4",
@@ -45,6 +49,8 @@
 		BPF_ALU64_REG(BPF_SUB, BPF_REG_1, BPF_REG_0),
 		BPF_EXIT_INSN(),
 	},
+	.errstr_unpriv = "R1 tried to sub from different maps, paths, or prohibited types",
+	.result_unpriv = REJECT,
 	.result = ACCEPT,
 },
 {
@@ -55,8 +61,9 @@
 		BPF_ALU64_REG(BPF_SUB, BPF_REG_0, BPF_REG_1),
 		BPF_EXIT_INSN(),
 	},
-	.result = REJECT,
+	.errstr_unpriv = "R0 tried to sub from different maps, paths, or prohibited types",
 	.errstr = "R0 tried to subtract pointer from scalar",
+	.result = REJECT,
 },
 {
 	"check deducing bounds from const, 6",
@@ -67,8 +74,9 @@
 		BPF_ALU64_REG(BPF_SUB, BPF_REG_0, BPF_REG_1),
 		BPF_EXIT_INSN(),
 	},
-	.result = REJECT,
+	.errstr_unpriv = "R0 tried to sub from different maps, paths, or prohibited types",
 	.errstr = "R0 tried to subtract pointer from scalar",
+	.result = REJECT,
 },
 {
 	"check deducing bounds from const, 7",
@@ -80,8 +88,9 @@
 			    offsetof(struct __sk_buff, mark)),
 		BPF_EXIT_INSN(),
 	},
-	.result = REJECT,
+	.errstr_unpriv = "R1 tried to sub from different maps, paths, or prohibited types",
 	.errstr = "dereference of modified ctx ptr",
+	.result = REJECT,
 	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
 },
 {
@@ -94,8 +103,9 @@
 			    offsetof(struct __sk_buff, mark)),
 		BPF_EXIT_INSN(),
 	},
-	.result = REJECT,
+	.errstr_unpriv = "R1 tried to add from different maps, paths, or prohibited types",
 	.errstr = "dereference of modified ctx ptr",
+	.result = REJECT,
 	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
 },
 {
@@ -106,8 +116,9 @@
 		BPF_ALU64_REG(BPF_SUB, BPF_REG_0, BPF_REG_1),
 		BPF_EXIT_INSN(),
 	},
-	.result = REJECT,
+	.errstr_unpriv = "R0 tried to sub from different maps, paths, or prohibited types",
 	.errstr = "R0 tried to subtract pointer from scalar",
+	.result = REJECT,
 },
 {
 	"check deducing bounds from const, 10",
@@ -119,6 +130,6 @@
 		BPF_ALU64_REG(BPF_SUB, BPF_REG_0, BPF_REG_1),
 		BPF_EXIT_INSN(),
 	},
-	.result = REJECT,
 	.errstr = "math between ctx pointer and register with unbounded min value is not allowed",
+	.result = REJECT,
 },
tools/testing/selftests/bpf/verifier/map_ptr.c +4 -0
index 637f9293bda8..92a1dc8e1746 100644
@@ -74,6 +74,8 @@
 	BPF_EXIT_INSN(),
 	},
 	.fixup_map_hash_16b = { 4 },
+	.result_unpriv = REJECT,
+	.errstr_unpriv = "R1 tried to add from different maps, paths, or prohibited types",
 	.result = ACCEPT,
 },
 {
@@ -90,5 +92,7 @@
 	BPF_EXIT_INSN(),
 	},
 	.fixup_map_hash_16b = { 4 },
+	.result_unpriv = REJECT,
+	.errstr_unpriv = "R1 tried to add from different maps, paths, or prohibited types",
 	.result = ACCEPT,
 },
tools/testing/selftests/bpf/verifier/unpriv.c +14 -1
index 91bb77c24a2e..0d621c841db1 100644
@@ -495,7 +495,7 @@
 	.result = ACCEPT,
 },
 {
-	"unpriv: adding of fp",
+	"unpriv: adding of fp, reg",
 	.insns = {
 	BPF_MOV64_IMM(BPF_REG_0, 0),
 	BPF_MOV64_IMM(BPF_REG_1, 0),
@@ -503,6 +503,19 @@
 	BPF_STX_MEM(BPF_DW, BPF_REG_1, BPF_REG_0, -8),
 	BPF_EXIT_INSN(),
 	},
+	.errstr_unpriv = "R1 tried to add from different maps, paths, or prohibited types",
+	.result_unpriv = REJECT,
+	.result = ACCEPT,
+},
+{
+	"unpriv: adding of fp, imm",
+	.insns = {
+	BPF_MOV64_IMM(BPF_REG_0, 0),
+	BPF_MOV64_REG(BPF_REG_1, BPF_REG_10),
+	BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, 0),
+	BPF_STX_MEM(BPF_DW, BPF_REG_1, BPF_REG_0, -8),
+	BPF_EXIT_INSN(),
+	},
 	.errstr_unpriv = "R1 stack pointer arithmetic goes out of range",
 	.result_unpriv = REJECT,
 	.result = ACCEPT,
tools/testing/selftests/bpf/verifier/value_ptr_arith.c +22 -1
index ed4e76b24649..feb91266db39 100644
@@ -169,7 +169,7 @@
 	.fixup_map_array_48b = { 1 },
 	.result = ACCEPT,
 	.result_unpriv = REJECT,
-	.errstr_unpriv = "R2 tried to add from different maps or paths",
+	.errstr_unpriv = "R2 tried to add from different maps, paths, or prohibited types",
 	.retval = 0,
 },
 {
@@ -516,6 +516,27 @@
 	.result = ACCEPT,
 	.retval = 0xabcdef12,
 },
+{
+	"map access: value_ptr += N, value_ptr -= N known scalar",
+	.insns = {
+	BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
+	BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
+	BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
+	BPF_LD_MAP_FD(BPF_REG_1, 0),
+	BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
+	BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 6),
+	BPF_MOV32_IMM(BPF_REG_1, 0x12345678),
+	BPF_STX_MEM(BPF_W, BPF_REG_0, BPF_REG_1, 0),
+	BPF_ALU64_IMM(BPF_ADD, BPF_REG_0, 2),
+	BPF_MOV64_IMM(BPF_REG_1, 2),
+	BPF_ALU64_REG(BPF_SUB, BPF_REG_0, BPF_REG_1),
+	BPF_LDX_MEM(BPF_W, BPF_REG_0, BPF_REG_0, 0),
+	BPF_EXIT_INSN(),
+	},
+	.fixup_map_array_48b = { 3 },
+	.result = ACCEPT,
+	.retval = 0x12345678,
+},
 {
 	"map access: unknown scalar += value_ptr, 1",
 	.insns = {

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 5.10.25 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/x86/crypto/aesni-intel_asm.S                       |  133 +++++++++-------
 arch/x86/crypto/aesni-intel_avx-x86_64.S                |   20 +-
 arch/x86/crypto/aesni-intel_glue.c                      |   25 +--
 drivers/infiniband/ulp/srp/ib_srp.c                     |  110 +++++--------
 drivers/net/dsa/b53/b53_common.c                        |   18 ++
 drivers/net/dsa/b53/b53_regs.h                          |    1 
 drivers/net/dsa/bcm_sf2.c                               |   15 -
 fs/fuse/fuse_i.h                                        |    1 
 fs/locks.c                                              |    3 
 fs/nfsd/nfs4state.c                                     |   53 +-----
 kernel/bpf/verifier.c                                   |   33 ++-
 sound/usb/endpoint.c                                    |    3 
 sound/usb/pcm.c                                         |    5 
 tools/testing/selftests/bpf/verifier/bounds_deduction.c |   27 ++-
 tools/testing/selftests/bpf/verifier/map_ptr.c          |    4 
 tools/testing/selftests/bpf/verifier/unpriv.c           |   15 +
 tools/testing/selftests/bpf/verifier/value_ptr_arith.c  |   23 ++
 18 files changed, 265 insertions(+), 226 deletions(-)

Amir Goldstein (1):
fuse: fix live lock in fuse_iget()

Ard Biesheuvel (1):
crypto: x86/aes-ni-xts - use direct calls to and 4-way stride

Florian Fainelli (1):
net: dsa: b53: Support setting learning on port

Greg Kroah-Hartman (1):

      Linux 5.10.25

J. Bruce Fields (2):
Revert "nfsd4: remove check_conflicting_opens warning" Revert "nfsd4: a client's own opens needn't prevent delegations"

Nicolas Morey-Chaisemartin (1):
RDMA/srp: Fix support for unpopulated and unbalanced NUMA nodes

Piotr Krysiuk (5):
bpf: Prohibit alu ops for pointer types not defining ptr_limit
bpf: Fix off-by-one for area size in creating mask to left
bpf: Simplify alu_limit masking for pointer arithmetic
bpf: Add sanity check for upper ptr_limit
bpf, selftests: Fix up some test_verifier cases for unprivileged

Takashi Iwai (1):
ALSA: usb-audio: Don't avoid stopping the stream at disconnection

Uros Bizjak (1):
crypto: aesni - Use TEST %reg,%reg instead of CMP $0,%reg

#2 lore raw

[ugh, resent with the lkml headers unbroken, sorry about the dupe]

Quoted 3 lines · Greg Kroah-Hartman

J. Bruce Fields (2):
Revert "nfsd4: remove check_conflicting_opens warning" Revert "nfsd4: a client's own opens needn't prevent delegations"

Hrm, just got this when I udpated my nfs server (32bit Via EPIA system) from 5.10.20 to 5.10.25:

[   49.225914] NFSD: Using UMH upcall client tracking operations.
[   49.231919] NFSD: starting 90-second grace period (net f0000036)
[   50.036973] ------------[ cut here ]------------
[   50.041771] WARNING: CPU: 0 PID: 2284 at fs/nfsd/nfs4state.c:4968 nfsd4_process_open2+0xf9c/0x1170 [nfsd]
[   50.051434] Modules linked in: md5 cpufreq_conservative cpufreq_userspace cpufreq_powersave cpufreq_ondemand autofs4 quota_v2 quota_tree nfsd auth_rpcgss nfs lockd grace nfs_ssc fscache sunrpc xt_mark cls_fw sch_htb iptable_nat xt_nat nf_nat ipt_REJECT nf_reject_ipv4 xt_tcpudp xt_multiport iptable_mangle xt_state xt_conntrack nf_conntrack nf_defrag_ipv4 nf_log_ipv4 nf_log_common xt_LOG xt_limit iptable_filter ip_tables x_tables nhpoly1305 chacha_generic libchacha adiantum libpoly1305 dm_crypt dm_mod snd_hda_codec_via snd_hda_codec_generic snd_hda_intel snd_intel_dspcfg snd_hda_codec snd_hwdep snd_hda_core snd_pcm snd_timer snd via_rhine psmouse soundcore mii via_agp sg via_velocity evdev agpgart
[   50.113386] CPU: 0 PID: 2284 Comm: nfsd Tainted: G                T 5.10.25 #1
[   50.120669] Hardware name: To Be Filled By O.E.M. To Be Filled By O.E.M./To be filled by O.E.M., BIOS 080014  06/01/2009
[   50.131652] EIP: nfsd4_process_open2+0xf9c/0x1170 [nfsd]
[   50.137036] Code: 04 88 45 a4 88 07 8b 45 a0 8d 78 49 8b 45 84 8d 70 01 e9 2b f8 ff ff c7 45 9c 00 00 00 00 31 ff bb 00 00 27 67 e9 04 f6 ff ff <0f> 0b e9 a0 f5 ff ff 0f b6 d4 0f a3 15 94 3f 23 f8 0f 83 b1 fd ff
[   50.155866] EAX: 00000000 EBX: 82da25b0 ECX: 830c0920 EDX: 00000000
[   50.162187] ESI: 82da25b0 EDI: 82da55a0 EBP: 8310be68 ESP: 8310bddc
[   50.168507] DS: 007b ES: 007b FS: 0000 GS: 00e0 SS: 0068 EFLAGS: 00010246
[   50.175338] CR0: 80050033 CR2: 00551e50 CR3: 03222000 CR4: 000006b0
[   50.181654] Call Trace:
[   50.184165]  ? inode_permission+0x17/0xc0
[   50.188289]  nfsd4_open+0x429/0x910 [nfsd]
[   50.192483]  ? nfsd4_encode_operation+0x185/0x1e0 [nfsd]
[   50.197900]  ? nfsd4_rename+0x1a0/0x1a0 [nfsd]
[   50.202439]  nfsd4_proc_compound+0x457/0x6c0 [nfsd]
[   50.207419]  nfsd_dispatch+0xdc/0x1a0 [nfsd]
[   50.211816]  svc_process_common+0x38a/0x650 [sunrpc]
[   50.216880]  ? svc_xprt_do_enqueue+0xd7/0xe0 [sunrpc]
[   50.222017]  ? svc_xprt_received+0x5d/0xf0 [sunrpc]
[   50.227000]  ? nfsd_svc+0x300/0x300 [nfsd]
[   50.231190]  svc_process+0xa9/0xf0 [sunrpc]
[   50.235468]  nfsd+0xcd/0x120 [nfsd]
[   50.239025]  kthread+0xe1/0x100
[   50.242259]  ? nfsd_destroy+0x50/0x50 [nfsd]
[   50.246588]  ? kthread_create_on_node+0x30/0x30
[   50.251165]  ret_from_fork+0x1c/0x28
[   50.254789] ---[ end trace 171bde4774bc9795 ]---

Can't readily reproduce it though, so likely a race condition or something that requires more state buildup than I have after a few minutes of uptime. Kernel config at
http://audible.transient.net/~jamie/k/nfsd.config-5.10.25 in case you think this worth more investigation.

Signature · 1 line
Jamie Heilman                     http://audible.transient.net/~jamie/
author maintainer
#3 lore raw
Quoted 42 lines · Jamie Heilman

[ugh, resent with the lkml headers unbroken, sorry about the dupe]

Quoted 3 lines · Greg Kroah-Hartman

J. Bruce Fields (2):
Revert "nfsd4: remove check_conflicting_opens warning" Revert "nfsd4: a client's own opens needn't prevent delegations"

Hrm, just got this when I udpated my nfs server (32bit Via EPIA system) from 5.10.20 to 5.10.25:

[   49.225914] NFSD: Using UMH upcall client tracking operations.
[   49.231919] NFSD: starting 90-second grace period (net f0000036)
[   50.036973] ------------[ cut here ]------------
[   50.041771] WARNING: CPU: 0 PID: 2284 at fs/nfsd/nfs4state.c:4968 nfsd4_process_open2+0xf9c/0x1170 [nfsd]
[   50.051434] Modules linked in: md5 cpufreq_conservative cpufreq_userspace cpufreq_powersave cpufreq_ondemand autofs4 quota_v2 quota_tree nfsd auth_rpcgss nfs lockd grace nfs_ssc fscache sunrpc xt_mark cls_fw sch_htb iptable_nat xt_nat nf_nat ipt_REJECT nf_reject_ipv4 xt_tcpudp xt_multiport iptable_mangle xt_state xt_conntrack nf_conntrack nf_defrag_ipv4 nf_log_ipv4 nf_log_common xt_LOG xt_limit iptable_filter ip_tables x_tables nhpoly1305 chacha_generic libchacha adiantum libpoly1305 dm_crypt dm_mod snd_hda_codec_via snd_hda_codec_generic snd_hda_intel snd_intel_dspcfg snd_hda_codec snd_hwdep snd_hda_core snd_pcm snd_timer snd via_rhine psmouse soundcore mii via_agp sg via_velocity evdev agpgart
[   50.113386] CPU: 0 PID: 2284 Comm: nfsd Tainted: G                T 5.10.25 #1
[   50.120669] Hardware name: To Be Filled By O.E.M. To Be Filled By O.E.M./To be filled by O.E.M., BIOS 080014  06/01/2009
[   50.131652] EIP: nfsd4_process_open2+0xf9c/0x1170 [nfsd]
[   50.137036] Code: 04 88 45 a4 88 07 8b 45 a0 8d 78 49 8b 45 84 8d 70 01 e9 2b f8 ff ff c7 45 9c 00 00 00 00 31 ff bb 00 00 27 67 e9 04 f6 ff ff <0f> 0b e9 a0 f5 ff ff 0f b6 d4 0f a3 15 94 3f 23 f8 0f 83 b1 fd ff
[   50.155866] EAX: 00000000 EBX: 82da25b0 ECX: 830c0920 EDX: 00000000
[   50.162187] ESI: 82da25b0 EDI: 82da55a0 EBP: 8310be68 ESP: 8310bddc
[   50.168507] DS: 007b ES: 007b FS: 0000 GS: 00e0 SS: 0068 EFLAGS: 00010246
[   50.175338] CR0: 80050033 CR2: 00551e50 CR3: 03222000 CR4: 000006b0
[   50.181654] Call Trace:
[   50.184165]  ? inode_permission+0x17/0xc0
[   50.188289]  nfsd4_open+0x429/0x910 [nfsd]
[   50.192483]  ? nfsd4_encode_operation+0x185/0x1e0 [nfsd]
[   50.197900]  ? nfsd4_rename+0x1a0/0x1a0 [nfsd]
[   50.202439]  nfsd4_proc_compound+0x457/0x6c0 [nfsd]
[   50.207419]  nfsd_dispatch+0xdc/0x1a0 [nfsd]
[   50.211816]  svc_process_common+0x38a/0x650 [sunrpc]
[   50.216880]  ? svc_xprt_do_enqueue+0xd7/0xe0 [sunrpc]
[   50.222017]  ? svc_xprt_received+0x5d/0xf0 [sunrpc]
[   50.227000]  ? nfsd_svc+0x300/0x300 [nfsd]
[   50.231190]  svc_process+0xa9/0xf0 [sunrpc]
[   50.235468]  nfsd+0xcd/0x120 [nfsd]
[   50.239025]  kthread+0xe1/0x100
[   50.242259]  ? nfsd_destroy+0x50/0x50 [nfsd]
[   50.246588]  ? kthread_create_on_node+0x30/0x30
[   50.251165]  ret_from_fork+0x1c/0x28
[   50.254789] ---[ end trace 171bde4774bc9795 ]---
Quoted 5 lines

Can't readily reproduce it though, so likely a race condition or something that requires more state buildup than I have after a few minutes of uptime. Kernel config at
http://audible.transient.net/~jamie/k/nfsd.config-5.10.25 in case you think this worth more investigation.

Do you also have this issue in Linus's tree and the latest 5.11.y release?

thanks,

greg k-h

#4 lore raw
Quoted 43 lines · Greg Kroah-Hartman
Quoted 42 lines · Jamie Heilman

[ugh, resent with the lkml headers unbroken, sorry about the dupe]

Quoted 3 lines · Greg Kroah-Hartman

J. Bruce Fields (2):
Revert "nfsd4: remove check_conflicting_opens warning" Revert "nfsd4: a client's own opens needn't prevent delegations"

Hrm, just got this when I udpated my nfs server (32bit Via EPIA system) from 5.10.20 to 5.10.25:

[   49.225914] NFSD: Using UMH upcall client tracking operations.
[   49.231919] NFSD: starting 90-second grace period (net f0000036)
[   50.036973] ------------[ cut here ]------------
[   50.041771] WARNING: CPU: 0 PID: 2284 at fs/nfsd/nfs4state.c:4968 nfsd4_process_open2+0xf9c/0x1170 [nfsd]
[   50.051434] Modules linked in: md5 cpufreq_conservative cpufreq_userspace cpufreq_powersave cpufreq_ondemand autofs4 quota_v2 quota_tree nfsd auth_rpcgss nfs lockd grace nfs_ssc fscache sunrpc xt_mark cls_fw sch_htb iptable_nat xt_nat nf_nat ipt_REJECT nf_reject_ipv4 xt_tcpudp xt_multiport iptable_mangle xt_state xt_conntrack nf_conntrack nf_defrag_ipv4 nf_log_ipv4 nf_log_common xt_LOG xt_limit iptable_filter ip_tables x_tables nhpoly1305 chacha_generic libchacha adiantum libpoly1305 dm_crypt dm_mod snd_hda_codec_via snd_hda_codec_generic snd_hda_intel snd_intel_dspcfg snd_hda_codec snd_hwdep snd_hda_core snd_pcm snd_timer snd via_rhine psmouse soundcore mii via_agp sg via_velocity evdev agpgart
[   50.113386] CPU: 0 PID: 2284 Comm: nfsd Tainted: G                T 5.10.25 #1
[   50.120669] Hardware name: To Be Filled By O.E.M. To Be Filled By O.E.M./To be filled by O.E.M., BIOS 080014  06/01/2009
[   50.131652] EIP: nfsd4_process_open2+0xf9c/0x1170 [nfsd]
[   50.137036] Code: 04 88 45 a4 88 07 8b 45 a0 8d 78 49 8b 45 84 8d 70 01 e9 2b f8 ff ff c7 45 9c 00 00 00 00 31 ff bb 00 00 27 67 e9 04 f6 ff ff <0f> 0b e9 a0 f5 ff ff 0f b6 d4 0f a3 15 94 3f 23 f8 0f 83 b1 fd ff
[   50.155866] EAX: 00000000 EBX: 82da25b0 ECX: 830c0920 EDX: 00000000
[   50.162187] ESI: 82da25b0 EDI: 82da55a0 EBP: 8310be68 ESP: 8310bddc
[   50.168507] DS: 007b ES: 007b FS: 0000 GS: 00e0 SS: 0068 EFLAGS: 00010246
[   50.175338] CR0: 80050033 CR2: 00551e50 CR3: 03222000 CR4: 000006b0
[   50.181654] Call Trace:
[   50.184165]  ? inode_permission+0x17/0xc0
[   50.188289]  nfsd4_open+0x429/0x910 [nfsd]
[   50.192483]  ? nfsd4_encode_operation+0x185/0x1e0 [nfsd]
[   50.197900]  ? nfsd4_rename+0x1a0/0x1a0 [nfsd]
[   50.202439]  nfsd4_proc_compound+0x457/0x6c0 [nfsd]
[   50.207419]  nfsd_dispatch+0xdc/0x1a0 [nfsd]
[   50.211816]  svc_process_common+0x38a/0x650 [sunrpc]
[   50.216880]  ? svc_xprt_do_enqueue+0xd7/0xe0 [sunrpc]
[   50.222017]  ? svc_xprt_received+0x5d/0xf0 [sunrpc]
[   50.227000]  ? nfsd_svc+0x300/0x300 [nfsd]
[   50.231190]  svc_process+0xa9/0xf0 [sunrpc]
[   50.235468]  nfsd+0xcd/0x120 [nfsd]
[   50.239025]  kthread+0xe1/0x100
[   50.242259]  ? nfsd_destroy+0x50/0x50 [nfsd]
[   50.246588]  ? kthread_create_on_node+0x30/0x30
[   50.251165]  ret_from_fork+0x1c/0x28
[   50.254789] ---[ end trace 171bde4774bc9795 ]---
Quoted 8 lines
Quoted 5 lines

Can't readily reproduce it though, so likely a race condition or something that requires more state buildup than I have after a few minutes of uptime. Kernel config at
http://audible.transient.net/~jamie/k/nfsd.config-5.10.25 in case you think this worth more investigation.

Do you also have this issue in Linus's tree and the latest 5.11.y release?

Haven't tried it, but like I said, I couldn't even reproduce it again with 5.10.25, or booting between 5.10.20 to 5.10.25 again ... I'll give the others a shot and see if I can repro it there.

Signature · 1 line
Jamie Heilman                     http://audible.transient.net/~jamie/
#5 lore raw
Quoted 50 lines · Jamie Heilman
Quoted 49 lines · Greg Kroah-Hartman
Quoted 47 lines · Jamie Heilman

[ugh, resent with the lkml headers unbroken, sorry about the dupe]

Quoted 3 lines · Greg Kroah-Hartman

J. Bruce Fields (2):
Revert "nfsd4: remove check_conflicting_opens warning" Revert "nfsd4: a client's own opens needn't prevent delegations"

Hrm, just got this when I udpated my nfs server (32bit Via EPIA system) from 5.10.20 to 5.10.25:

[   49.225914] NFSD: Using UMH upcall client tracking operations.
[   49.231919] NFSD: starting 90-second grace period (net f0000036)
[   50.036973] ------------[ cut here ]------------
[   50.041771] WARNING: CPU: 0 PID: 2284 at fs/nfsd/nfs4state.c:4968 nfsd4_process_open2+0xf9c/0x1170 [nfsd]
[   50.051434] Modules linked in: md5 cpufreq_conservative cpufreq_userspace cpufreq_powersave cpufreq_ondemand autofs4 quota_v2 quota_tree nfsd auth_rpcgss nfs lockd grace nfs_ssc fscache sunrpc xt_mark cls_fw sch_htb iptable_nat xt_nat nf_nat ipt_REJECT nf_reject_ipv4 xt_tcpudp xt_multiport iptable_mangle xt_state xt_conntrack nf_conntrack nf_defrag_ipv4 nf_log_ipv4 nf_log_common xt_LOG xt_limit iptable_filter ip_tables x_tables nhpoly1305 chacha_generic libchacha adiantum libpoly1305 dm_crypt dm_mod snd_hda_codec_via snd_hda_codec_generic snd_hda_intel snd_intel_dspcfg snd_hda_codec snd_hwdep snd_hda_core snd_pcm snd_timer snd via_rhine psmouse soundcore mii via_agp sg via_velocity evdev agpgart
[   50.113386] CPU: 0 PID: 2284 Comm: nfsd Tainted: G                T 5.10.25 #1
[   50.120669] Hardware name: To Be Filled By O.E.M. To Be Filled By O.E.M./To be filled by O.E.M., BIOS 080014  06/01/2009
[   50.131652] EIP: nfsd4_process_open2+0xf9c/0x1170 [nfsd]
[   50.137036] Code: 04 88 45 a4 88 07 8b 45 a0 8d 78 49 8b 45 84 8d 70 01 e9 2b f8 ff ff c7 45 9c 00 00 00 00 31 ff bb 00 00 27 67 e9 04 f6 ff ff <0f> 0b e9 a0 f5 ff ff 0f b6 d4 0f a3 15 94 3f 23 f8 0f 83 b1 fd ff
[   50.155866] EAX: 00000000 EBX: 82da25b0 ECX: 830c0920 EDX: 00000000
[   50.162187] ESI: 82da25b0 EDI: 82da55a0 EBP: 8310be68 ESP: 8310bddc
[   50.168507] DS: 007b ES: 007b FS: 0000 GS: 00e0 SS: 0068 EFLAGS: 00010246
[   50.175338] CR0: 80050033 CR2: 00551e50 CR3: 03222000 CR4: 000006b0
[   50.181654] Call Trace:
[   50.184165]  ? inode_permission+0x17/0xc0
[   50.188289]  nfsd4_open+0x429/0x910 [nfsd]
[   50.192483]  ? nfsd4_encode_operation+0x185/0x1e0 [nfsd]
[   50.197900]  ? nfsd4_rename+0x1a0/0x1a0 [nfsd]
[   50.202439]  nfsd4_proc_compound+0x457/0x6c0 [nfsd]
[   50.207419]  nfsd_dispatch+0xdc/0x1a0 [nfsd]
[   50.211816]  svc_process_common+0x38a/0x650 [sunrpc]
[   50.216880]  ? svc_xprt_do_enqueue+0xd7/0xe0 [sunrpc]
[   50.222017]  ? svc_xprt_received+0x5d/0xf0 [sunrpc]
[   50.227000]  ? nfsd_svc+0x300/0x300 [nfsd]
[   50.231190]  svc_process+0xa9/0xf0 [sunrpc]
[   50.235468]  nfsd+0xcd/0x120 [nfsd]
[   50.239025]  kthread+0xe1/0x100
[   50.242259]  ? nfsd_destroy+0x50/0x50 [nfsd]
[   50.246588]  ? kthread_create_on_node+0x30/0x30
[   50.251165]  ret_from_fork+0x1c/0x28
[   50.254789] ---[ end trace 171bde4774bc9795 ]---

Can't readily reproduce it though, so likely a race condition or something that requires more state buildup than I have after a few minutes of uptime. Kernel config at
http://audible.transient.net/~jamie/k/nfsd.config-5.10.25 in case you think this worth more investigation.

Quoted 6 lines
Quoted 2 lines

Do you also have this issue in Linus's tree and the latest 5.11.y release?

Haven't tried it, but like I said, I couldn't even reproduce it again with 5.10.25, or booting between 5.10.20 to 5.10.25 again ... I'll give the others a shot and see if I can repro it there.

Yeah, can't repro it with 5.11.8 or 5.12.0-rc3-00281-g1d4345eb51a1 either, seems to have been a spurious thing.

Signature · 1 line
Jamie Heilman                     http://audible.transient.net/~jamie/
#6 lore raw
Quoted 54 lines · Jamie Heilman
Quoted 53 lines · Jamie Heilman
Quoted 51 lines · Greg Kroah-Hartman
Quoted 42 lines · Jamie Heilman

[ugh, resent with the lkml headers unbroken, sorry about the dupe]

Quoted 3 lines · Greg Kroah-Hartman

J. Bruce Fields (2):
Revert "nfsd4: remove check_conflicting_opens warning" Revert "nfsd4: a client's own opens needn't prevent delegations"

Hrm, just got this when I udpated my nfs server (32bit Via EPIA system) from 5.10.20 to 5.10.25:

[   49.225914] NFSD: Using UMH upcall client tracking operations.
[   49.231919] NFSD: starting 90-second grace period (net f0000036)
[   50.036973] ------------[ cut here ]------------
[   50.041771] WARNING: CPU: 0 PID: 2284 at fs/nfsd/nfs4state.c:4968 nfsd4_process_open2+0xf9c/0x1170 [nfsd]
[   50.051434] Modules linked in: md5 cpufreq_conservative cpufreq_userspace cpufreq_powersave cpufreq_ondemand autofs4 quota_v2 quota_tree nfsd auth_rpcgss nfs lockd grace nfs_ssc fscache sunrpc xt_mark cls_fw sch_htb iptable_nat xt_nat nf_nat ipt_REJECT nf_reject_ipv4 xt_tcpudp xt_multiport iptable_mangle xt_state xt_conntrack nf_conntrack nf_defrag_ipv4 nf_log_ipv4 nf_log_common xt_LOG xt_limit iptable_filter ip_tables x_tables nhpoly1305 chacha_generic libchacha adiantum libpoly1305 dm_crypt dm_mod snd_hda_codec_via snd_hda_codec_generic snd_hda_intel snd_intel_dspcfg snd_hda_codec snd_hwdep snd_hda_core snd_pcm snd_timer snd via_rhine psmouse soundcore mii via_agp sg via_velocity evdev agpgart
[   50.113386] CPU: 0 PID: 2284 Comm: nfsd Tainted: G                T 5.10.25 #1
[   50.120669] Hardware name: To Be Filled By O.E.M. To Be Filled By O.E.M./To be filled by O.E.M., BIOS 080014  06/01/2009
[   50.131652] EIP: nfsd4_process_open2+0xf9c/0x1170 [nfsd]
[   50.137036] Code: 04 88 45 a4 88 07 8b 45 a0 8d 78 49 8b 45 84 8d 70 01 e9 2b f8 ff ff c7 45 9c 00 00 00 00 31 ff bb 00 00 27 67 e9 04 f6 ff ff <0f> 0b e9 a0 f5 ff ff 0f b6 d4 0f a3 15 94 3f 23 f8 0f 83 b1 fd ff
[   50.155866] EAX: 00000000 EBX: 82da25b0 ECX: 830c0920 EDX: 00000000
[   50.162187] ESI: 82da25b0 EDI: 82da55a0 EBP: 8310be68 ESP: 8310bddc
[   50.168507] DS: 007b ES: 007b FS: 0000 GS: 00e0 SS: 0068 EFLAGS: 00010246
[   50.175338] CR0: 80050033 CR2: 00551e50 CR3: 03222000 CR4: 000006b0
[   50.181654] Call Trace:
[   50.184165]  ? inode_permission+0x17/0xc0
[   50.188289]  nfsd4_open+0x429/0x910 [nfsd]
[   50.192483]  ? nfsd4_encode_operation+0x185/0x1e0 [nfsd]
[   50.197900]  ? nfsd4_rename+0x1a0/0x1a0 [nfsd]
[   50.202439]  nfsd4_proc_compound+0x457/0x6c0 [nfsd]
[   50.207419]  nfsd_dispatch+0xdc/0x1a0 [nfsd]
[   50.211816]  svc_process_common+0x38a/0x650 [sunrpc]
[   50.216880]  ? svc_xprt_do_enqueue+0xd7/0xe0 [sunrpc]
[   50.222017]  ? svc_xprt_received+0x5d/0xf0 [sunrpc]
[   50.227000]  ? nfsd_svc+0x300/0x300 [nfsd]
[   50.231190]  svc_process+0xa9/0xf0 [sunrpc]
[   50.235468]  nfsd+0xcd/0x120 [nfsd]
[   50.239025]  kthread+0xe1/0x100
[   50.242259]  ? nfsd_destroy+0x50/0x50 [nfsd]
[   50.246588]  ? kthread_create_on_node+0x30/0x30
[   50.251165]  ret_from_fork+0x1c/0x28
[   50.254789] ---[ end trace 171bde4774bc9795 ]---
Quoted 5 lines

Can't readily reproduce it though, so likely a race condition or something that requires more state buildup than I have after a few minutes of uptime. Kernel config at
http://audible.transient.net/~jamie/k/nfsd.config-5.10.25 in case you think this worth more investigation.

Do you also have this issue in Linus's tree and the latest 5.11.y release?

Quoted 6 lines
Quoted 3 lines

Haven't tried it, but like I said, I couldn't even reproduce it again with 5.10.25, or booting between 5.10.20 to 5.10.25 again ... I'll give the others a shot and see if I can repro it there.

Yeah, can't repro it with 5.11.8 or 5.12.0-rc3-00281-g1d4345eb51a1 either, seems to have been a spurious thing.

I've seen at least one report previously, so it's not a regression.

I'm not sure what's going on there. I think it might actually be possible if a CLOSE arrives from the client at exactly the wrong moment. In which case, all that happens here is we decline to give out a delegation. Probably the warning should just be removed.

--b.