====================================== | [ 13.346336][ C3] #0: ffffffffbd57f9b0 (remove_cache_srcu){.+.+}-{0:0}, at: kasan_quarantine_reduce (./include/linux/srcu.h:161 ./include/linux/srcu.h:253 mm/kasan/quarantine.c:259) | [ 13.346817][ C3] #1: ffffffffbd3774c0 (rcu_callback){....}-{0:0}, at: rcu_do_batch (./include/linux/rcupdate.h:331 kernel/rcu/tree.c:2570) | [ 13.347225][ C3] | [ 13.347225][ C3] stack backtrace: [ 13.347520][ C3] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011 [ 13.347522][ C3] Call Trace: [ 13.347525][ C3] [ 13.347527][ C3] dump_stack_lvl (lib/dump_stack.c:123) [ 13.347534][ C3] print_usage_bug.part.0 (kernel/locking/lockdep.c:4048) [ 13.347538][ C3] mark_lock_irq (kernel/locking/lockdep.c:4013 kernel/locking/lockdep.c:4059 kernel/locking/lockdep.c:4270) [ 13.347543][ C3] ? __pfx_unwind_next_frame (arch/x86/kernel/unwind_orc.c:469) [ 13.347549][ C3] ? save_trace (kernel/locking/lockdep.c:595) [ 13.347553][ C3] mark_lock (kernel/locking/lockdep.c:4756) [ 13.347557][ C3] mark_usage (kernel/locking/lockdep.c:4645) [ 13.347561][ C3] __lock_acquire (kernel/locking/lockdep.c:5194) [ 13.347564][ C3] ? __lock_acquire (kernel/locking/lockdep.c:5240) [ 13.347569][ C3] lock_acquire.part.0 (kernel/locking/lockdep.c:473 kernel/locking/lockdep.c:5873) [ 13.347572][ C3] ? simple_pin_fs (fs/libfs.c:1067) [ 13.347576][ C3] ? rcu_is_watching (./include/linux/context_tracking.h:128 kernel/rcu/tree.c:745) [ 13.347582][ C3] ? lock_acquire (./include/trace/events/lock.h:24 kernel/locking/lockdep.c:5834) [ 13.347585][ C3] ? simple_pin_fs (fs/libfs.c:1067) [ 13.347589][ C3] _raw_spin_lock (./include/linux/spinlock_api_smp.h:134 kernel/locking/spinlock.c:154) [ 13.347592][ C3] ? simple_pin_fs (fs/libfs.c:1067) [ 13.347595][ C3] simple_pin_fs (fs/libfs.c:1067) [ 13.347598][ C3] debugfs_remove (fs/debugfs/inode.c:805 fs/debugfs/inode.c:799) [ 13.347601][ C3] ref_tracker_dir_exit (lib/ref_tracker.c:412 lib/ref_tracker.c:196) [ 13.347608][ C3] ? __pfx_ref_tracker_free (lib/ref_tracker.c:254) [ 13.347610][ C3] ? __sk_destruct (./include/linux/instrumented.h:96 ./include/linux/atomic/atomic-instrumented.h:400 ./include/linux/refcount.h:389 ./include/linux/refcount.h:432 ./include/linux/refcount.h:450 ./include/net/net_namespace.h:287 ./include/net/net_namespace.h:390 net/core/sock.c:2376) [ 13.347617][ C3] ? rcu_do_batch (kernel/rcu/tree.c:2576) [ 13.347620][ C3] ? __pfx_ref_tracker_dir_exit (lib/ref_tracker.c:190) [ 13.347623][ C3] ? irq_exit_rcu (kernel/softirq.c:698) [ 13.347626][ C3] ? sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1050 arch/x86/kernel/apic/apic.c:1050) [ 13.347631][ C3] ? asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:702) [ 13.347636][ C3] ? _raw_spin_unlock_irqrestore (./include/linux/spinlock_api_smp.h:152 kernel/locking/spinlock.c:194) [ 13.347639][ C3] ? qlist_free_all (mm/kasan/quarantine.c:174) [ 13.347642][ C3] ? kasan_quarantine_reduce (./include/linux/srcu.h:400 mm/kasan/quarantine.c:287) [ 13.347646][ C3] ? __kasan_slab_alloc (mm/kasan/common.c:329) [ 13.347652][ C3] ? kmem_cache_alloc_noprof (./include/linux/kasan.h:250 mm/slub.c:4147 mm/slub.c:4196 mm/slub.c:4203) [ 13.347658][ C3] ? getname_flags (fs/namei.c:146) [ 13.347663][ C3] ? do_sys_openat2 (./include/linux/fs.h:2879 fs/open.c:1431) [ 13.347669][ C3] ? __x64_sys_openat (fs/open.c:1463) [ 13.347674][ C3] __put_net (net/core/net_namespace.c:732) [ 13.347679][ C3] __sk_destruct (./include/net/net_namespace.h:288 ./include/net/net_namespace.h:390 net/core/sock.c:2376) [ 13.347683][ C3] ? rcu_do_batch (kernel/rcu/tree.c:2576) [ 13.347686][ C3] rcu_do_batch (kernel/rcu/tree.c:2576) [ 13.347690][ C3] ? find_held_lock (kernel/locking/lockdep.c:5353) [ 13.347694][ C3] ? __pfx_rcu_do_batch (kernel/rcu/tree.c:2500) [ 13.347698][ C3] ? mark_held_locks (kernel/locking/lockdep.c:4328) [ 13.347701][ C3] ? note_gp_changes (kernel/rcu/tree.c:1326 (discriminator 1)) [ 13.347704][ C3] ? lockdep_hardirqs_on (kernel/locking/lockdep.c:4475) [ 13.347709][ C3] rcu_core (kernel/rcu/tree.c:2834) [ 13.347714][ C3] handle_softirqs (kernel/softirq.c:579) [ 13.347720][ C3] __irq_exit_rcu (kernel/softirq.c:614 kernel/softirq.c:453 kernel/softirq.c:680) [ 13.347723][ C3] irq_exit_rcu (kernel/softirq.c:698) [ 13.347727][ C3] sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1050 arch/x86/kernel/apic/apic.c:1050) [ 13.347730][ C3] [ 13.347731][ C3] [ 13.347733][ C3] asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:702) [ 13.347736][ C3] RIP: 0010:_raw_spin_unlock_irqrestore (./include/linux/spinlock_api_smp.h:152 kernel/locking/spinlock.c:194) [ 13.347740][ C3] Code: 74 24 10 e8 c1 fe 81 fd 48 89 ef e8 79 51 82 fd 81 e3 00 02 00 00 75 29 9c 58 f6 c4 02 75 35 48 85 db 74 01 fb bf 01 00 00 00 fa 4e 76 fd 65 8b 05 13 bd 96 02 85 c0 74 0e 5b 5d c3 cc cc cc All code ======== 0: 74 24 je 0x26 2: 10 e8 adc %ch,%al 4: c1 fe 81 sar $0x81,%esi 7: fd std 8: 48 89 ef mov %rbp,%rdi b: e8 79 51 82 fd call 0xfffffffffd825189 10: 81 e3 00 02 00 00 and $0x200,%ebx 16: 75 29 jne 0x41 18: 9c pushf 19: 58 pop %rax 1a: f6 c4 02 test $0x2,%ah 1d: 75 35 jne 0x54 1f: 48 85 db test %rbx,%rbx 22: 74 01 je 0x25 24: fb sti 25: bf 01 00 00 00 mov $0x1,%edi 2a:* e8 fa 4e 76 fd call 0xfffffffffd764f29 <-- trapping instruction 2f: 65 8b 05 13 bd 96 02 mov %gs:0x296bd13(%rip),%eax # 0x296bd49 36: 85 c0 test %eax,%eax 38: 74 0e je 0x48 3a: 5b pop %rbx 3b: 5d pop %rbp 3c: c3 ret 3d: cc int3 3e: cc int3 3f: cc int3 Code starting with the faulting instruction =========================================== 0: e8 fa 4e 76 fd call 0xfffffffffd764eff 5: 65 8b 05 13 bd 96 02 mov %gs:0x296bd13(%rip),%eax # 0x296bd1f c: 85 c0 test %eax,%eax e: 74 0e je 0x1e 10: 5b pop %rbx 11: 5d pop %rbp 12: c3 ret 13: cc int3 14: cc int3 15: cc int3 [ 13.347743][ C3] RSP: 0018:ffffc900006f7c78 EFLAGS: 00000206 [ 13.347747][ C3] RAX: 0000000000000006 RBX: 0000000000000200 RCX: 0000000000000080 [ 13.347749][ C3] RDX: 0000000000000000 RSI: ffffffffbce9175c RDI: 0000000000000001 [ 13.347750][ C3] RBP: ffff88800104f440 R08: 0000000000000001 R09: 0000000000000001 [ 13.347752][ C3] R10: ffffffffbdde7cd7 R11: ffff88800104f458 R12: ffff88800a399164 [ 13.347754][ C3] R13: 0000000000000000 R14: ffffc900006f7cc8 R15: ffff8880027084e8 [ 13.347760][ C3] qlist_free_all (mm/kasan/quarantine.c:174) [ 13.347764][ C3] kasan_quarantine_reduce (./include/linux/srcu.h:400 mm/kasan/quarantine.c:287) [ 13.347769][ C3] __kasan_slab_alloc (mm/kasan/common.c:329) [ 13.347773][ C3] kmem_cache_alloc_noprof (./include/linux/kasan.h:250 mm/slub.c:4147 mm/slub.c:4196 mm/slub.c:4203) [ 13.347778][ C3] getname_flags (fs/namei.c:146) [ 13.347781][ C3] ? __virt_addr_valid (./include/linux/rcupdate.h:341 ./include/linux/rcupdate.h:953 ./include/linux/mmzone.h:2126 arch/x86/mm/physaddr.c:65) [ 13.347788][ C3] do_sys_openat2 (./include/linux/fs.h:2879 fs/open.c:1431) [ 13.347792][ C3] ? __pfx_do_sys_openat2 (fs/open.c:1422) [ 13.347796][ C3] ? trace_rcu_segcb_stats (./include/linux/context_tracking.h:128 kernel/rcu/tree.c:745 ./include/trace/events/rcu.h:537) [ 13.347799][ C3] ? rcu_is_watching (./include/linux/context_tracking.h:128 kernel/rcu/tree.c:745) [ 13.347802][ C3] ? __call_rcu_common.constprop.0 (kernel/rcu/tree.c:3115) [ 13.347806][ C3] ? lockdep_hardirqs_on (kernel/locking/lockdep.c:4475) [ 13.347811][ C3] __x64_sys_openat (fs/open.c:1463) [ 13.347815][ C3] ? fput_close_sync (fs/file_table.c:568) [ 13.347820][ C3] ? __pfx___x64_sys_openat (fs/open.c:1463) [ 13.347824][ C3] ? rcu_is_watching (./include/linux/context_tracking.h:128 kernel/rcu/tree.c:745) [ 13.347827][ C3] ? do_syscall_64 (./arch/x86/include/asm/irqflags.h:42 ./arch/x86/include/asm/irqflags.h:119 ./include/linux/entry-common.h:199 arch/x86/entry/syscall_64.c:90) [ 13.347831][ C3] do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94) [ 13.347834][ C3] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130) [ 13.347837][ C3] RIP: 0033:0x7f3f8c2969a6 [ 13.347845][ C3] Code: Unable to access opcode bytes at 0x7f3f8c29697c. Code starting with the faulting instruction =========================================== [ 13.347847][ C3] RSP: 002b:00007ffdd4a351b0 EFLAGS: 00000246 ORIG_RAX: 0000000000000101 [ 13.347850][ C3] RAX: ffffffffffffffda RBX: 000000000000000b RCX: 00007f3f8c2969a6 [ 13.347852][ C3] RDX: 00000000002a0000 RSI: 0000563883ba6350 RDI: 000000000000000b [ 13.347853][ C3] RBP: 00007ffdd4a35410 R08: 0000000000000007 R09: 0000000000000020 [ 13.347855][ C3] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000007 [ 13.347856][ C3] R13: 0000000000000001 R14: 000000000000000b R15: 0000563883ba95c0 | [ 13.370388][ C3] RCU nest depth: 0, expected: 0 | [ 13.370594][ C3] INFO: lockdep is turned off. | [ 13.370803][ C3] Preemption disabled at: | [ 13.370805][ C3] 0x0 [ 13.371167][ C3] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011 [ 13.371169][ C3] Call Trace: [ 13.371172][ C3] [ 13.371173][ C3] dump_stack_lvl (lib/dump_stack.c:123) [ 13.371180][ C3] __might_resched (kernel/sched/core.c:8796) [ 13.371190][ C3] down_write (./include/linux/kernel.h:73 kernel/locking/rwsem.c:1576) [ 13.371194][ C3] ? __pfx_down_write (kernel/locking/rwsem.c:1575) [ 13.371197][ C3] ? simple_recursive_removal (fs/libfs.c:614) [ 13.371203][ C3] ? rcu_is_watching (./include/linux/context_tracking.h:128 kernel/rcu/tree.c:745) [ 13.371209][ C3] ? do_raw_spin_unlock (./arch/x86/include/asm/atomic.h:23 ./include/linux/atomic/atomic-arch-fallback.h:457 ./include/linux/atomic/atomic-instrumented.h:33 ./include/asm-generic/qspinlock.h:57 kernel/locking/spinlock_debug.c:101 kernel/locking/spinlock_debug.c:141) [ 13.371214][ C3] simple_recursive_removal (./include/linux/dcache.h:409 ./include/linux/dcache.h:424 ./include/linux/dcache.h:434 fs/libfs.c:617) [ 13.371217][ C3] ? do_raw_spin_unlock (./arch/x86/include/asm/atomic.h:23 ./include/linux/atomic/atomic-arch-fallback.h:457 ./include/linux/atomic/atomic-instrumented.h:33 ./include/asm-generic/qspinlock.h:57 kernel/locking/spinlock_debug.c:101 kernel/locking/spinlock_debug.c:141) [ 13.371220][ C3] ? __pfx_remove_one (fs/debugfs/inode.c:780) [ 13.371226][ C3] debugfs_remove (fs/debugfs/inode.c:806 fs/debugfs/inode.c:799) [ 13.371229][ C3] ref_tracker_dir_exit (lib/ref_tracker.c:412 lib/ref_tracker.c:196) [ 13.371234][ C3] ? __pfx_ref_tracker_free (lib/ref_tracker.c:254) [ 13.371237][ C3] ? __sk_destruct (./include/linux/instrumented.h:96 ./include/linux/atomic/atomic-instrumented.h:400 ./include/linux/refcount.h:389 ./include/linux/refcount.h:432 ./include/linux/refcount.h:450 ./include/net/net_namespace.h:287 ./include/net/net_namespace.h:390 net/core/sock.c:2376) [ 13.371243][ C3] ? rcu_do_batch (kernel/rcu/tree.c:2576) [ 13.371248][ C3] ? __pfx_ref_tracker_dir_exit (lib/ref_tracker.c:190) [ 13.371251][ C3] ? irq_exit_rcu (kernel/softirq.c:698) [ 13.371256][ C3] ? sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1050 arch/x86/kernel/apic/apic.c:1050) [ 13.371260][ C3] ? asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:702) [ 13.371265][ C3] ? _raw_spin_unlock_irqrestore (./include/linux/spinlock_api_smp.h:152 kernel/locking/spinlock.c:194) [ 13.371270][ C3] ? qlist_free_all (mm/kasan/quarantine.c:174) [ 13.371275][ C3] ? kasan_quarantine_reduce (./include/linux/srcu.h:400 mm/kasan/quarantine.c:287) [ 13.371278][ C3] ? __kasan_slab_alloc (mm/kasan/common.c:329) [ 13.371283][ C3] ? kmem_cache_alloc_noprof (./include/linux/kasan.h:250 mm/slub.c:4147 mm/slub.c:4196 mm/slub.c:4203) [ 13.371288][ C3] ? getname_flags (fs/namei.c:146) [ 13.371292][ C3] ? do_sys_openat2 (./include/linux/fs.h:2879 fs/open.c:1431) [ 13.371297][ C3] ? __x64_sys_openat (fs/open.c:1463) [ 13.371302][ C3] __put_net (net/core/net_namespace.c:732) [ 13.371307][ C3] __sk_destruct (./include/net/net_namespace.h:288 ./include/net/net_namespace.h:390 net/core/sock.c:2376) [ 13.371311][ C3] ? rcu_do_batch (kernel/rcu/tree.c:2576) [ 13.371314][ C3] rcu_do_batch (kernel/rcu/tree.c:2576) [ 13.371318][ C3] ? find_held_lock (kernel/locking/lockdep.c:5353) [ 13.371322][ C3] ? __pfx_rcu_do_batch (kernel/rcu/tree.c:2500) [ 13.371326][ C3] ? mark_held_locks (kernel/locking/lockdep.c:4328) [ 13.371330][ C3] ? note_gp_changes (kernel/rcu/tree.c:1326 (discriminator 1)) [ 13.371333][ C3] ? lockdep_hardirqs_on (kernel/locking/lockdep.c:4475) [ 13.371338][ C3] rcu_core (kernel/rcu/tree.c:2834) [ 13.371343][ C3] handle_softirqs (kernel/softirq.c:579) [ 13.371348][ C3] __irq_exit_rcu (kernel/softirq.c:614 kernel/softirq.c:453 kernel/softirq.c:680) [ 13.371352][ C3] irq_exit_rcu (kernel/softirq.c:698) [ 13.371355][ C3] sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1050 arch/x86/kernel/apic/apic.c:1050) [ 13.371358][ C3] [ 13.371359][ C3] [ 13.371361][ C3] asm_sysvec_apic_timer_interrupt (./arch/x86/include/asm/idtentry.h:702) [ 13.371365][ C3] RIP: 0010:_raw_spin_unlock_irqrestore (./include/linux/spinlock_api_smp.h:152 kernel/locking/spinlock.c:194) [ 13.371369][ C3] Code: 74 24 10 e8 c1 fe 81 fd 48 89 ef e8 79 51 82 fd 81 e3 00 02 00 00 75 29 9c 58 f6 c4 02 75 35 48 85 db 74 01 fb bf 01 00 00 00 fa 4e 76 fd 65 8b 05 13 bd 96 02 85 c0 74 0e 5b 5d c3 cc cc cc All code ======== 0: 74 24 je 0x26 2: 10 e8 adc %ch,%al 4: c1 fe 81 sar $0x81,%esi 7: fd std 8: 48 89 ef mov %rbp,%rdi b: e8 79 51 82 fd call 0xfffffffffd825189 10: 81 e3 00 02 00 00 and $0x200,%ebx 16: 75 29 jne 0x41 18: 9c pushf 19: 58 pop %rax 1a: f6 c4 02 test $0x2,%ah 1d: 75 35 jne 0x54 1f: 48 85 db test %rbx,%rbx 22: 74 01 je 0x25 24: fb sti 25: bf 01 00 00 00 mov $0x1,%edi 2a:* e8 fa 4e 76 fd call 0xfffffffffd764f29 <-- trapping instruction 2f: 65 8b 05 13 bd 96 02 mov %gs:0x296bd13(%rip),%eax # 0x296bd49 36: 85 c0 test %eax,%eax 38: 74 0e je 0x48 3a: 5b pop %rbx 3b: 5d pop %rbp 3c: c3 ret 3d: cc int3 3e: cc int3 3f: cc int3 Code starting with the faulting instruction =========================================== 0: e8 fa 4e 76 fd call 0xfffffffffd764eff 5: 65 8b 05 13 bd 96 02 mov %gs:0x296bd13(%rip),%eax # 0x296bd1f c: 85 c0 test %eax,%eax e: 74 0e je 0x1e 10: 5b pop %rbx 11: 5d pop %rbp 12: c3 ret 13: cc int3 14: cc int3 15: cc int3 [ 13.371371][ C3] RSP: 0018:ffffc900006f7c78 EFLAGS: 00000206 [ 13.371374][ C3] RAX: 0000000000000006 RBX: 0000000000000200 RCX: 0000000000000080 [ 13.371376][ C3] RDX: 0000000000000000 RSI: ffffffffbce9175c RDI: 0000000000000001 [ 13.371378][ C3] RBP: ffff88800104f440 R08: 0000000000000001 R09: 0000000000000001 [ 13.371379][ C3] R10: ffffffffbdde7cd7 R11: ffff88800104f458 R12: ffff88800a399164 [ 13.371381][ C3] R13: 0000000000000000 R14: ffffc900006f7cc8 R15: ffff8880027084e8 [ 13.371387][ C3] qlist_free_all (mm/kasan/quarantine.c:174) [ 13.371392][ C3] kasan_quarantine_reduce (./include/linux/srcu.h:400 mm/kasan/quarantine.c:287) [ 13.371396][ C3] __kasan_slab_alloc (mm/kasan/common.c:329) [ 13.371400][ C3] kmem_cache_alloc_noprof (./include/linux/kasan.h:250 mm/slub.c:4147 mm/slub.c:4196 mm/slub.c:4203) [ 13.371406][ C3] getname_flags (fs/namei.c:146) [ 13.371408][ C3] ? __virt_addr_valid (./include/linux/rcupdate.h:341 ./include/linux/rcupdate.h:953 ./include/linux/mmzone.h:2126 arch/x86/mm/physaddr.c:65) [ 13.371415][ C3] do_sys_openat2 (./include/linux/fs.h:2879 fs/open.c:1431) [ 13.371419][ C3] ? __pfx_do_sys_openat2 (fs/open.c:1422) [ 13.371422][ C3] ? trace_rcu_segcb_stats (./include/linux/context_tracking.h:128 kernel/rcu/tree.c:745 ./include/trace/events/rcu.h:537) [ 13.371426][ C3] ? rcu_is_watching (./include/linux/context_tracking.h:128 kernel/rcu/tree.c:745) [ 13.371429][ C3] ? __call_rcu_common.constprop.0 (kernel/rcu/tree.c:3115) [ 13.371433][ C3] ? lockdep_hardirqs_on (kernel/locking/lockdep.c:4475) [ 13.371438][ C3] __x64_sys_openat (fs/open.c:1463) [ 13.371442][ C3] ? fput_close_sync (fs/file_table.c:568) [ 13.371446][ C3] ? __pfx___x64_sys_openat (fs/open.c:1463) [ 13.371451][ C3] ? rcu_is_watching (./include/linux/context_tracking.h:128 kernel/rcu/tree.c:745) [ 13.371454][ C3] ? do_syscall_64 (./arch/x86/include/asm/irqflags.h:42 ./arch/x86/include/asm/irqflags.h:119 ./include/linux/entry-common.h:199 arch/x86/entry/syscall_64.c:90) [ 13.371458][ C3] do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94) [ 13.371461][ C3] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130) [ 13.371463][ C3] RIP: 0033:0x7f3f8c2969a6 [ 13.371469][ C3] Code: Unable to access opcode bytes at 0x7f3f8c29697c. Code starting with the faulting instruction =========================================== [ 13.371470][ C3] RSP: 002b:00007ffdd4a351b0 EFLAGS: 00000246 ORIG_RAX: 0000000000000101 [ 13.371473][ C3] RAX: ffffffffffffffda RBX: 000000000000000b RCX: 00007f3f8c2969a6 [ 13.371474][ C3] RDX: 00000000002a0000 RSI: 0000563883ba6350 RDI: 000000000000000b [ 13.371476][ C3] RBP: 00007ffdd4a35410 R08: 0000000000000007 R09: 0000000000000020 [ 13.371478][ C3] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000007 Finger prints: __might_resched:down_write:simple_recursive_removal:debugfs_remove:ref_tracker_dir_exit mark_lock_irq:mark_lock:mark_usage:__lock_acquire:_raw_spin_lock