• Paulo Alcantara's avatar
    smb: client: instantiate when creating SFU files · c6ff4590
    Paulo Alcantara authored
    In cifs_sfu_make_node(), on success, instantiate rather than leave it
    with dentry unhashed negative to support callers that expect mknod(2)
    to always instantiate.
    
    This fixes the following test case:
    
      mount.cifs //srv/share /mnt -o ...,sfu
      mkfifo /mnt/fifo
      ./xfstests/ltp/growfiles -b -W test -e 1 -u -i 0 -L 30 /mnt/fifo
      ...
      BUG: unable to handle page fault for address: 000000034cec4e58
      #PF: supervisor read access in kernel mode
      #PF: error_code(0x0000) - not-present page
      PGD 0 P4D 0
      Oops: 0000 1 PREEMPT SMP PTI
      CPU: 0 PID: 138098 Comm: growfiles Kdump: loaded Not tainted
      5.14.0-436.3987_1240945149.el9.x86_64 #1
      Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
      RIP: 0010:_raw_callee_save__kvm_vcpu_is_preempted+0x0/0x20
      Code: e8 15 d9 61 00 e9 63 ff ff ff 41 bd ea ff ff ff e9 58 ff ff ff e8
      d0 71 c0 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 <48> 8b 04
      fd 60 2b c1 99 80 b8 90 50 03 00 00 0f 95 c0 c3 cc cc cc
      RSP: 0018:ffffb6a143cf7cf8 EFLAGS: 00010206
      RAX: ffff8a9bc30fb038 RBX: ffff8a9bc666a200 RCX: ffff8a9cc0260000
      RDX: 00000000736f622e RSI: ffff8a9bc30fb038 RDI: 000000007665645f
      RBP: ffffb6a143cf7d70 R08: 0000000000001000 R09: 0000000000000001
      R10: 0000000000000001 R11: 0000000000000000 R12: ffff8a9bc666a200
      R13: 0000559a302a12b0 R14: 0000000000001000 R15: 0000000000000000
      FS: 00007fbed1dbb740(0000) GS:ffff8a9cf0000000(0000)
      knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 000000034cec4e58 CR3: 0000000128ec6006 CR4: 0000000000770ef0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      PKRU: 55555554
      Call Trace:
       <TASK>
       ? show_trace_log_lvl+0x1c4/0x2df
       ? show_trace_log_lvl+0x1c4/0x2df
       ? __mutex_lock.constprop.0+0x5f7/0x6a0
       ? __die_body.cold+0x8/0xd
       ? page_fault_oops+0x134/0x170
       ? exc_page_fault+0x62/0x150
       ? asm_exc_page_fault+0x22/0x30
       ? _pfx_raw_callee_save__kvm_vcpu_is_preempted+0x10/0x10
       __mutex_lock.constprop.0+0x5f7/0x6a0
       ? __mod_memcg_lruvec_state+0x84/0xd0
       pipe_write+0x47/0x650
       ? do_anonymous_page+0x258/0x410
       ? inode_security+0x22/0x60
       ? selinux_file_permission+0x108/0x150
       vfs_write+0x2cb/0x410
       ksys_write+0x5f/0xe0
       do_syscall_64+0x5c/0xf0
       ? syscall_exit_to_user_mode+0x22/0x40
       ? do_syscall_64+0x6b/0xf0
       ? sched_clock_cpu+0x9/0xc0
       ? exc_page_fault+0x62/0x150
       entry_SYSCALL_64_after_hwframe+0x6e/0x76
    
    Cc: stable@vger.kernel.org
    Fixes: 72bc63f5 ("smb3: fix creating FIFOs when mounting with "sfu" mount option")
    Suggested-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: default avatarPaulo Alcantara (Red Hat) <pc@manguebit.com>
    Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
    c6ff4590
smb2ops.c 158 KB