ci2 starts bisection 2026-09-01 22:06:37.447580098 +0000 UTC m=+40886.832941092 bisecting fixing commit since 61d896ee2a8005c4e9d9da24421ba554601421be building syzkaller on e611ffe1caa28a0228c8f3642cc768f0dba3dd0c ensuring issue is reproducible on original commit 61d896ee2a8005c4e9d9da24421ba554601421be testing commit 61d896ee2a8005c4e9d9da24421ba554601421be gcc compiler: gcc (GCC) 10.2.1 20210217, GNU ld (GNU Binutils for Debian) 2.44 kernel signature: 437addbf363d6f96f8387a9c44fafa2ba8e8f064b154d11ee2f70bc02ee98eba run #0: crashed: KASAN: use-after-free Write in config_item_get run #1: crashed: KASAN: use-after-free Write in config_item_put run #2: crashed: KASAN: use-after-free Write in config_item_get run #3: crashed: KASAN: use-after-free Write in config_item_get run #4: crashed: KASAN: use-after-free Write in config_item_get run #5: crashed: KASAN: use-after-free Write in config_item_get run #6: crashed: KASAN: use-after-free Write in config_item_get run #7: crashed: KASAN: use-after-free Write in config_item_get run #8: crashed: KASAN: use-after-free Write in config_item_get run #9: crashed: KASAN: use-after-free Write in config_item_get run #10: crashed: KASAN: use-after-free Write in config_item_get run #11: crashed: KASAN: use-after-free Write in config_item_get run #12: crashed: KASAN: use-after-free Write in config_item_put run #13: crashed: KASAN: use-after-free Write in config_item_get run #14: crashed: KASAN: use-after-free Write in config_item_get run #15: crashed: KASAN: use-after-free Write in config_item_get run #16: crashed: KASAN: use-after-free Write in config_item_get run #17: crashed: KASAN: use-after-free Write in config_item_get run #18: crashed: KASAN: use-after-free Write in config_item_get run #19: boot failed: can't ssh into the instance representative crash: KASAN: use-after-free Write in config_item_get, types: [KASAN-USE-AFTER-FREE-WRITE] check whether we can drop unnecessary instrumentation disabling configs for [locking atomic_sleep hang memleak ubsan bug_or_warning], they are not needed testing commit 61d896ee2a8005c4e9d9da24421ba554601421be gcc compiler: gcc (GCC) 10.2.1 20210217, GNU ld (GNU Binutils for Debian) 2.44 kernel signature: 5321358396258ba63ee2239911afaad8a2f25ab31d320d1c415db5e15c6b6d3f run #0: crashed: KASAN: use-after-free Write in config_item_get run #1: crashed: KASAN: use-after-free Write in config_item_get run #2: crashed: KASAN: use-after-free Write in config_item_put run #3: crashed: KASAN: use-after-free Write in config_item_get run #4: crashed: KASAN: use-after-free Write in config_item_put run #5: crashed: KASAN: use-after-free Write in config_item_get run #6: crashed: KASAN: use-after-free Write in config_item_get run #7: crashed: KASAN: use-after-free Write in config_item_put run #8: crashed: KASAN: use-after-free Write in config_item_get run #9: crashed: KASAN: use-after-free Write in config_item_put representative crash: KASAN: use-after-free Write in config_item_get, types: [KASAN-USE-AFTER-FREE-WRITE] the bug reproduces without the instrumentation disabling configs for [bug_or_warning locking atomic_sleep hang memleak ubsan], they are not needed kconfig minimization: base=4921 full=6218 leaves diff=256 split chunks (needed=false): <256> split chunk #0 of len 256 into 5 parts testing without sub-chunk 1/5 disabling configs for [ubsan bug_or_warning locking atomic_sleep hang memleak], they are not needed testing commit 61d896ee2a8005c4e9d9da24421ba554601421be gcc compiler: gcc (GCC) 10.2.1 20210217, GNU ld (GNU Binutils for Debian) 2.44 kernel signature: c3ec5f8bb623cabcd02a2e7384d434a6482cdfce2ad8d2df79ff0b61dc8aec3a run #0: crashed: KASAN: use-after-free Write in config_item_put run #1: crashed: KASAN: use-after-free Write in config_item_get run #2: crashed: KASAN: use-after-free Write in config_item_get run #3: crashed: KASAN: use-after-free Write in config_item_get run #4: crashed: KASAN: use-after-free Write in config_item_get run #5: crashed: KASAN: use-after-free Write in config_item_get run #6: crashed: KASAN: use-after-free Write in config_item_get run #7: crashed: KASAN: use-after-free Write in config_item_get run #8: crashed: KASAN: use-after-free Write in config_item_get run #9: crashed: KASAN: use-after-free Write in config_item_get representative crash: KASAN: use-after-free Write in config_item_put, types: [KASAN-USE-AFTER-FREE-WRITE] the chunk can be dropped testing without sub-chunk 2/5 disabling configs for [memleak ubsan bug_or_warning locking atomic_sleep hang], they are not needed testing commit 61d896ee2a8005c4e9d9da24421ba554601421be gcc compiler: gcc (GCC) 10.2.1 20210217, GNU ld (GNU Binutils for Debian) 2.44 kernel signature: 7b2212890917883da7866474b62c74bad1af384db26646fcb9b4ecd365a7e1cf run #0: crashed: KASAN: use-after-free Write in config_item_get run #1: crashed: KASAN: use-after-free Write in config_item_get run #2: crashed: KASAN: use-after-free Write in config_item_get run #3: crashed: KASAN: use-after-free Write in config_item_get run #4: crashed: KASAN: use-after-free Write in config_item_get run #5: crashed: KASAN: use-after-free Write in config_item_get run #6: crashed: KASAN: use-after-free Write in config_item_put run #7: crashed: KASAN: use-after-free Write in config_item_get run #8: crashed: KASAN: use-after-free Write in config_item_put run #9: crashed: KASAN: use-after-free Write in config_item_get representative crash: KASAN: use-after-free Write in config_item_get, types: [KASAN-USE-AFTER-FREE-WRITE] the chunk can be dropped testing without sub-chunk 3/5 disabling configs for [memleak ubsan bug_or_warning locking atomic_sleep hang], they are not needed testing commit 61d896ee2a8005c4e9d9da24421ba554601421be gcc compiler: gcc (GCC) 10.2.1 20210217, GNU ld (GNU Binutils for Debian) 2.44 kernel signature: 1ca280c791071d8461004099ae38ae626f570bf120b4f38c8215c94c9d7a0cff run #0: crashed: KASAN: use-after-free Write in config_item_get run #1: crashed: KASAN: use-after-free Write in config_item_get run #2: crashed: KASAN: use-after-free Write in config_item_get run #3: crashed: KASAN: use-after-free Write in config_item_get run #4: crashed: KASAN: use-after-free Write in config_item_get run #5: crashed: KASAN: use-after-free Write in config_item_put run #6: crashed: KASAN: use-after-free Write in config_item_get run #7: crashed: KASAN: use-after-free Write in config_item_put run #8: crashed: KASAN: use-after-free Write in config_item_put run #9: crashed: KASAN: use-after-free Write in config_item_get representative crash: KASAN: use-after-free Write in config_item_get, types: [KASAN-USE-AFTER-FREE-WRITE] the chunk can be dropped testing without sub-chunk 4/5 disabling configs for [hang memleak ubsan bug_or_warning locking atomic_sleep], they are not needed testing commit 61d896ee2a8005c4e9d9da24421ba554601421be gcc compiler: gcc (GCC) 10.2.1 20210217, GNU ld (GNU Binutils for Debian) 2.44 kernel signature: 20a86b7c6a1664b4d2e29bde2b77f6a222d270ad58694c77b36dc074e42c950f all runs: OK false negative chance: 0.000 testing without sub-chunk 5/5 disabling configs for [bug_or_warning locking atomic_sleep hang memleak ubsan], they are not needed testing commit 61d896ee2a8005c4e9d9da24421ba554601421be gcc compiler: gcc (GCC) 10.2.1 20210217, GNU ld (GNU Binutils for Debian) 2.44 failed building 61d896ee2a8005c4e9d9da24421ba554601421be: net/socket.c:1189:(.text+0x6dea): undefined reference to `wext_handle_ioctl' net/socket.c:3390:(.text+0x73e4): undefined reference to `compat_wext_handle_ioctl' net/core/net-procfs.c:343:(.text+0x33b): undefined reference to `wext_proc_exit' net/core/net-procfs.c:327:(.text+0x4e2): undefined reference to `wext_proc_init' minimized to 100 configs; suspects: [HID_ZEROPLUS SND SOUND USB_BELKIN USB_CONFIGFS USB_CONFIGFS_ACM USB_CONFIGFS_ECM USB_CONFIGFS_ECM_SUBSET USB_CONFIGFS_EEM USB_CONFIGFS_F_ACC USB_CONFIGFS_F_AUDIO_SRC USB_CONFIGFS_F_FS USB_CONFIGFS_F_HID USB_CONFIGFS_F_LB_SS USB_CONFIGFS_F_MIDI USB_CONFIGFS_F_PRINTER USB_CONFIGFS_F_UAC1 USB_CONFIGFS_F_UAC1_LEGACY USB_CONFIGFS_F_UAC2 USB_CONFIGFS_F_UVC USB_CONFIGFS_MASS_STORAGE USB_CONFIGFS_NCM USB_CONFIGFS_OBEX USB_CONFIGFS_RNDIS USB_CONFIGFS_SERIAL USB_CONFIGFS_UEVENT USB_EHSET_TEST_FIXTURE USB_F_ACC USB_F_ACM USB_F_AUDIO_SRC USB_F_ECM USB_F_EEM USB_F_FS USB_F_HID USB_F_MASS_STORAGE USB_F_MIDI USB_F_NCM USB_F_OBEX USB_F_PRINTER USB_F_RNDIS USB_F_SERIAL USB_F_SS_LB USB_F_SUBSET USB_F_UAC1 USB_F_UAC1_LEGACY USB_F_UAC2 USB_F_UVC USB_GADGET_DEBUG_FILES USB_GADGET_DEBUG_FS USB_IPHETH USB_ISP1760 USB_ISP1760_HCD USB_ISP1760_HOST_ROLE USB_LIBCOMPOSITE USB_LINK_LAYER_TEST USB_MON USB_NET_CDC_MBIM USB_NET_CDC_SUBSET USB_NET_CDC_SUBSET_ENABLE USB_NET_DM9601 USB_NET_GL620A USB_NET_MCS7830 USB_NET_NET1080 USB_NET_PLUSB USB_NET_RNDIS_HOST USB_NET_SMSC75XX USB_NET_SMSC95XX USB_NET_SR9700 USB_NET_SR9800 USB_NET_ZAURUS USB_OHCI_HCD USB_OHCI_HCD_PCI USB_OHCI_HCD_PLATFORM USB_OTG USB_OTG_FSM USB_PRINTER USB_SERIAL USB_SERIAL_FTDI_SIO USB_SERIAL_GENERIC USB_SERIAL_PL2303 USB_STORAGE_ALAUDA USB_STORAGE_CYPRESS_ATACB USB_STORAGE_DATAFAB USB_STORAGE_FREECOM USB_STORAGE_ISD200 USB_STORAGE_JUMPSHOT USB_STORAGE_KARMA USB_STORAGE_ONETOUCH USB_STORAGE_SDDR09 USB_STORAGE_SDDR55 USB_STORAGE_USBAT USB_TRANCEVIBRATOR USB_U_AUDIO USB_U_ETHER USB_U_SERIAL USB_WDM USB_XHCI_PCI_RENESAS WLAN WLAN_VENDOR_ATH WLAN_VENDOR_ATMEL WLAN_VENDOR_BROADCOM WLAN_VENDOR_INTERSIL WLAN_VENDOR_MARVELL WLAN_VENDOR_MEDIATEK WLAN_VENDOR_MICROCHIP WLAN_VENDOR_RALINK WLAN_VENDOR_REALTEK WLAN_VENDOR_RSI WLAN_VENDOR_ZYDAS ZEROPLUS_FF] disabling configs for [memleak ubsan bug_or_warning locking atomic_sleep hang], they are not needed testing current HEAD 7f9a109e0767a6912a4125e297418537800b2a29 testing commit 7f9a109e0767a6912a4125e297418537800b2a29 gcc compiler: gcc (GCC) 10.2.1 20210217, GNU ld (GNU Binutils for Debian) 2.44 kernel signature: 18c50a2bbf2c933685212ac4cd3016aea003050612a6b704d7a5501d2e14f695 run #0: crashed: KASAN: use-after-free Write in config_item_put run #1: crashed: KASAN: use-after-free Write in config_item_get run #2: crashed: KASAN: use-after-free Write in config_item_put run #3: crashed: KASAN: use-after-free Write in config_item_put run #4: crashed: KASAN: use-after-free Write in config_item_put run #5: crashed: KASAN: use-after-free Write in config_item_get run #6: crashed: KASAN: use-after-free Write in config_item_get run #7: crashed: KASAN: use-after-free Write in config_item_put run #8: crashed: KASAN: use-after-free Write in config_item_get run #9: crashed: KASAN: use-after-free Write in config_item_get representative crash: KASAN: use-after-free Write in config_item_put, types: [KASAN-USE-AFTER-FREE-WRITE] crash still not fixed/happens on the oldest tested release revisions tested: 7, total time: 1h41m47.535357451s (build: 31m9.442554659s, test: 1h2m33.429886384s) crash still not fixed or there were kernel test errors commit msg: Merge 82e4ab03a6ab ("hwmon: adm1275: Prevent reading uninitialized stack") into android13-5.15-lts crash: KASAN: use-after-free Write in config_item_put Mass Storage Function, version: 2009/09/11 LUN: removable file: (no medium) ================================================================== BUG: KASAN: use-after-free in instrument_atomic_read_write include/linux/instrumented.h:101 [inline] BUG: KASAN: use-after-free in atomic_fetch_sub_release include/linux/atomic/atomic-instrumented.h:167 [inline] BUG: KASAN: use-after-free in __refcount_sub_and_test include/linux/refcount.h:272 [inline] BUG: KASAN: use-after-free in __refcount_dec_and_test include/linux/refcount.h:315 [inline] BUG: KASAN: use-after-free in refcount_dec_and_test include/linux/refcount.h:333 [inline] BUG: KASAN: use-after-free in kref_put include/linux/kref.h:64 [inline] BUG: KASAN: use-after-free in config_item_put+0x21/0x60 fs/configfs/item.c:149 Write of size 4 at addr ffff88811ac13824 by task syz.2.80/602 CPU: 0 PID: 602 Comm: syz.2.80 Not tainted syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/24/2026 Call Trace: __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x38/0x49 lib/dump_stack.c:106 print_address_description.constprop.0+0x24/0x160 mm/kasan/report.c:248 __kasan_report mm/kasan/report.c:427 [inline] kasan_report.cold+0x82/0xdb mm/kasan/report.c:444 check_region_inline mm/kasan/generic.c:183 [inline] kasan_check_range+0x148/0x190 mm/kasan/generic.c:189 __kasan_check_write+0x14/0x20 mm/kasan/shadow.c:37 instrument_atomic_read_write include/linux/instrumented.h:101 [inline] atomic_fetch_sub_release include/linux/atomic/atomic-instrumented.h:167 [inline] __refcount_sub_and_test include/linux/refcount.h:272 [inline] __refcount_dec_and_test include/linux/refcount.h:315 [inline] refcount_dec_and_test include/linux/refcount.h:333 [inline] kref_put include/linux/kref.h:64 [inline] config_item_put+0x21/0x60 fs/configfs/item.c:149 configfs_symlink+0x3b3/0xe90 fs/configfs/symlink.c:212 vfs_symlink fs/namei.c:4437 [inline] vfs_symlink+0xe9/0x2b0 fs/namei.c:4422 do_symlinkat+0x134/0x2a0 fs/namei.c:4466 __do_sys_symlinkat fs/namei.c:4483 [inline] __se_sys_symlinkat fs/namei.c:4480 [inline] __x64_sys_symlinkat+0x94/0xc0 fs/namei.c:4480 x64_sys_call+0x2ac/0x990 arch/x86/include/generated/asm/syscalls_64.h:267 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x33/0x80 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x66/0xd0 RIP: 0033:0x7ff0f4c79019 Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 e8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007ff0f4ada028 EFLAGS: 00000246 ORIG_RAX: 000000000000010a RAX: ffffffffffffffda RBX: 00007ff0f4f00fa0 RCX: 00007ff0f4c79019 RDX: 0000200000000300 RSI: ffffffffffffff9c RDI: 0000200000000200 RBP: 00007ff0f4d1000c R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 R13: 00007ff0f4f01038 R14: 00007ff0f4f00fa0 R15: 00007ffcb9586a78 Allocated by task 602: kasan_save_stack+0x26/0x50 mm/kasan/common.c:38 kasan_set_track mm/kasan/common.c:45 [inline] set_alloc_info mm/kasan/common.c:433 [inline] ____kasan_kmalloc mm/kasan/common.c:512 [inline] ____kasan_kmalloc mm/kasan/common.c:471 [inline] __kasan_kmalloc+0xae/0xe0 mm/kasan/common.c:521 kasan_kmalloc include/linux/kasan.h:227 [inline] kmem_cache_alloc_trace+0x30c/0x4e0 mm/slub.c:3274 kmalloc include/linux/slab.h:619 [inline] kzalloc include/linux/slab.h:750 [inline] fsg_alloc_inst+0xa3/0x460 drivers/usb/gadget/function/f_mass_storage.c:3392 try_get_usb_function_instance+0xee/0x190 drivers/usb/gadget/functions.c:28 usb_get_function_instance+0xe/0x50 drivers/usb/gadget/functions.c:44 function_make+0xf6/0x410 drivers/usb/gadget/configfs.c:642 configfs_mkdir+0x3e0/0xa50 fs/configfs/dir.c:1360 vfs_mkdir+0x1d5/0x430 fs/namei.c:4073 do_mkdirat+0x152/0x2c0 fs/namei.c:4098 __do_sys_mkdirat fs/namei.c:4113 [inline] __se_sys_mkdirat fs/namei.c:4111 [inline] __x64_sys_mkdirat+0xf4/0x140 fs/namei.c:4111 x64_sys_call+0x2e4/0x990 arch/x86/include/generated/asm/syscalls_64.h:259 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x33/0x80 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x66/0xd0 Freed by task 592: kasan_save_stack+0x26/0x50 mm/kasan/common.c:38 kasan_set_track+0x25/0x30 mm/kasan/common.c:45 kasan_set_free_info+0x24/0x40 mm/kasan/generic.c:370 ____kasan_slab_free mm/kasan/common.c:365 [inline] ____kasan_slab_free mm/kasan/common.c:327 [inline] __kasan_slab_free+0x111/0x150 mm/kasan/common.c:373 kasan_slab_free include/linux/kasan.h:193 [inline] slab_free_hook mm/slub.c:1728 [inline] slab_free_freelist_hook+0x94/0x1a0 mm/slub.c:1754 slab_free mm/slub.c:3526 [inline] kfree+0xc2/0x2a0 mm/slub.c:4588 fsg_free_inst+0x1dc/0x3d0 drivers/usb/gadget/function/f_mass_storage.c:3383 usb_put_function_instance+0x80/0xb0 drivers/usb/gadget/functions.c:77 fsg_attr_release+0x9/0x10 drivers/usb/gadget/function/f_mass_storage.c:3269 config_item_cleanup+0x122/0x210 fs/configfs/item.c:128 config_item_release fs/configfs/item.c:137 [inline] kref_put include/linux/kref.h:65 [inline] config_item_put+0x45/0x60 fs/configfs/item.c:149 configfs_rmdir+0x6c9/0xbb0 fs/configfs/dir.c:1571 vfs_rmdir.part.0+0xe2/0x460 fs/namei.c:4157 vfs_rmdir fs/namei.c:4143 [inline] do_rmdir+0x2e8/0x3f0 fs/namei.c:4218 __do_sys_rmdir fs/namei.c:4237 [inline] __se_sys_rmdir fs/namei.c:4235 [inline] __x64_sys_rmdir+0xa5/0xe0 fs/namei.c:4235 x64_sys_call+0x736/0x990 arch/x86/include/generated/asm/syscalls_64.h:85 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x33/0x80 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x66/0xd0 The buggy address belongs to the object at ffff88811ac13800 which belongs to the cache kmalloc-512 of size 512 The buggy address is located 36 bytes inside of 512-byte region [ffff88811ac13800, ffff88811ac13a00) The buggy address belongs to the page: page:ffffea00046b0400 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x11ac10 head:ffffea00046b0400 order:2 compound_mapcount:0 compound_pincount:0 flags: 0x4000000000010200(slab|head|zone=1) raw: 4000000000010200 ffffea00046b8300 0000000300000003 ffff888100042f00 raw: 0000000000000000 0000000000100010 00000001ffffffff 0000000000000000 page dumped because: kasan: bad access detected page_owner tracks the page as allocated page last allocated via order 2, migratetype Unmovable, gfp_mask 0xd20c0(__GFP_IO|__GFP_FS|__GFP_NOWARN|__GFP_NORETRY|__GFP_COMP|__GFP_NOMEMALLOC), pid 283, ts 19859622729, free_ts 0 set_page_owner include/linux/page_owner.h:33 [inline] post_alloc_hook mm/page_alloc.c:2607 [inline] prep_new_page+0x1a2/0x310 mm/page_alloc.c:2613 get_page_from_freelist+0x1ce2/0x30a0 mm/page_alloc.c:4487 __alloc_pages+0x300/0x2d60 mm/page_alloc.c:5824 __alloc_pages_node include/linux/gfp.h:595 [inline] alloc_pages_node include/linux/gfp.h:609 [inline] alloc_pages include/linux/gfp.h:622 [inline] alloc_slab_page mm/slub.c:1798 [inline] allocate_slab+0x39d/0x530 mm/slub.c:1937 new_slab mm/slub.c:2000 [inline] ___slab_alloc.constprop.0+0x3ca/0x890 mm/slub.c:3033 __slab_alloc.constprop.0+0x42/0x80 mm/slub.c:3120 slab_alloc_node mm/slub.c:3211 [inline] slab_alloc mm/slub.c:3255 [inline] __kmalloc_track_caller+0x501/0x540 mm/slub.c:4954 kmalloc_reserve net/core/skbuff.c:357 [inline] __alloc_skb+0x8b/0x250 net/core/skbuff.c:428 alloc_skb include/linux/skbuff.h:1183 [inline] alloc_skb_with_frags+0x76/0x4a0 net/core/skbuff.c:6220 sock_alloc_send_pskb+0x68b/0x840 net/core/sock.c:2542 unix_stream_sendmsg+0x401/0xdf0 net/unix/af_unix.c:2084 sock_sendmsg_nosec net/socket.c:704 [inline] __sock_sendmsg+0xb5/0xf0 net/socket.c:716 sock_write_iter+0x223/0x430 net/socket.c:1080 call_write_iter include/linux/fs.h:2212 [inline] new_sync_write+0x49b/0x6d0 fs/read_write.c:507 vfs_write+0x5cf/0x8e0 fs/read_write.c:594 ksys_write+0x192/0x210 fs/read_write.c:647 page_owner free stack trace missing Memory state around the buggy address: ffff88811ac13700: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc ffff88811ac13780: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc >ffff88811ac13800: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ^ ffff88811ac13880: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ffff88811ac13900: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ==================================================================