Linux 5.10.25
Greg Kroah-Hartman
maintainerI'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
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -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
@@ -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
@@ -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
@@ -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 , ®); +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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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 = {
[ugh, resent with the lkml headers unbroken, sorry about the dupe]
Quoted 3 lines · Greg Kroah-Hartman
J. Bruce Fields (2):
Revert "nfsd4: removecheck_conflicting_openswarning" 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/
Greg Kroah-Hartman
maintainerQuoted 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: removecheck_conflicting_openswarning" 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
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: removecheck_conflicting_openswarning" 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/
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: removecheck_conflicting_openswarning" 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/
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: removecheck_conflicting_openswarning" 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.