ci starts bisection 2023-03-19 16:31:17.232315462 +0000 UTC m=+159360.511692545 bisecting cause commit starting from a3671bd86a9770e34969522d29bb30a1b66fd88a building syzkaller on 7939252e4ddf50bbb9912069a40d32f6c83c4f8e ensuring issue is reproducible on original commit a3671bd86a9770e34969522d29bb30a1b66fd88a testing commit a3671bd86a9770e34969522d29bb30a1b66fd88a gcc compiler: gcc (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2 kernel signature: 12ce1c49dd491d5fd33b128e15766a3fd3468b49713d253c536ff87dc9550032 run #0: crashed: WARNING in diUnmount run #1: crashed: KASAN: invalid-free in diUnmount run #2: crashed: WARNING in diUnmount run #3: crashed: WARNING in diUnmount run #4: OK run #5: OK run #6: OK run #7: OK run #8: OK run #9: OK run #10: OK run #11: OK run #12: OK run #13: OK run #14: OK run #15: OK run #16: OK run #17: OK run #18: OK run #19: OK reproducer seems to be flaky testing release v6.2 testing commit c9c3395d5e3dcc6daee66c6908354d47bf98cb0c gcc compiler: gcc (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2 kernel signature: 67a27258c4cebcdc40f0d4c86b4def76efad24e65af3277a8b6f04c4a301a244 run #0: crashed: INFO: rcu detected stall in corrupted run #1: crashed: KASAN: invalid-free in diUnmount run #2: crashed: INFO: rcu detected stall in corrupted run #3: crashed: INFO: rcu detected stall in corrupted run #4: crashed: KASAN: invalid-free in diUnmount run #5: crashed: KASAN: invalid-free in diUnmount run #6: crashed: WARNING in diUnmount run #7: crashed: INFO: rcu detected stall in corrupted run #8: crashed: KASAN: invalid-free in dbUnmount run #9: crashed: INFO: rcu detected stall in corrupted run #10: crashed: INFO: rcu detected stall in corrupted run #11: crashed: INFO: rcu detected stall in corrupted run #12: crashed: INFO: rcu detected stall in corrupted run #13: crashed: INFO: rcu detected stall in corrupted run #14: crashed: INFO: rcu detected stall in corrupted run #15: crashed: KASAN: invalid-free in diUnmount run #16: crashed: WARNING in diUnmount run #17: crashed: WARNING in diUnmount run #18: crashed: WARNING in diUnmount run #19: crashed: WARNING in diUnmount testing release v6.1 testing commit 830b3c68c1fb1e9176028d02ef86f3cf76aa2476 gcc compiler: gcc (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2 kernel signature: 336bf398387d4daecfedb2686215ec288b00daf2ff8777f723de78eee6d86711 run #0: crashed: KASAN: invalid-free in diUnmount run #1: crashed: KASAN: invalid-free in diUnmount run #2: crashed: KASAN: invalid-free in diUnmount run #3: crashed: INFO: rcu detected stall in corrupted run #4: crashed: INFO: rcu detected stall in corrupted run #5: crashed: KASAN: invalid-free in diUnmount run #6: crashed: WARNING in diUnmount run #7: crashed: KASAN: invalid-free in diUnmount run #8: crashed: INFO: rcu detected stall in corrupted run #9: crashed: INFO: rcu detected stall in corrupted run #10: crashed: INFO: rcu detected stall in corrupted run #11: crashed: INFO: rcu detected stall in corrupted run #12: crashed: INFO: rcu detected stall in corrupted run #13: crashed: INFO: rcu detected stall in corrupted run #14: crashed: INFO: rcu detected stall in corrupted run #15: crashed: INFO: rcu detected stall in corrupted run #16: crashed: INFO: rcu detected stall in corrupted run #17: crashed: WARNING in diUnmount run #18: crashed: WARNING in diUnmount run #19: OK testing release v6.0 testing commit 4fe89d07dcc2804c8b562f6c7896a45643d34b2f gcc compiler: gcc (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2 kernel signature: 1d349ad87432d0ea47023c6772d3fdb858ad6c18294e5679462dd8ee3dc0de3a run #0: crashed: KASAN: invalid-free in diUnmount run #1: crashed: KASAN: invalid-free in dbUnmount run #2: crashed: INFO: rcu detected stall in corrupted run #3: crashed: INFO: rcu detected stall in corrupted run #4: crashed: INFO: rcu detected stall in corrupted run #5: crashed: INFO: rcu detected stall in corrupted run #6: crashed: INFO: rcu detected stall in corrupted run #7: crashed: KASAN: use-after-free Read in copy_page_from_iter_atomic run #8: crashed: INFO: rcu detected stall in corrupted run #9: crashed: INFO: rcu detected stall in corrupted run #10: crashed: INFO: rcu detected stall in corrupted run #11: crashed: INFO: rcu detected stall in corrupted run #12: crashed: INFO: rcu detected stall in corrupted run #13: crashed: WARNING in diUnmount run #14: crashed: INFO: rcu detected stall in corrupted run #15: crashed: INFO: rcu detected stall in corrupted run #16: crashed: KASAN: invalid-free in diUnmount run #17: crashed: WARNING in diUnmount run #18: OK run #19: OK testing release v5.19 testing commit 3d7cb6b04c3f3115719235cc6866b10326de34cd gcc compiler: gcc (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2 kernel signature: 4434f978f3f43f4cccd5ca20706b4c0a885c88f456cff2c160d4e7f8c6b52af6 all runs: OK # git bisect start 4fe89d07dcc2804c8b562f6c7896a45643d34b2f 3d7cb6b04c3f3115719235cc6866b10326de34cd Bisecting: 8384 revisions left to test after this (roughly 13 steps) [78acd4ca433425e6dd4032cfc2156c60e34931f2] usb: cdns3: Don't use priv_dev uninitialized in cdns3_gadget_ep_enable() testing commit 78acd4ca433425e6dd4032cfc2156c60e34931f2 gcc compiler: gcc (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2 kernel signature: 05cd3ee7e9c09150c2c72c9b0a2d341dd878fd61a6fd83796262c00468f8f0c9 all runs: basic kernel testing failed: WARNING: ODEBUG bug in mgmt_index_removed # git bisect skip 78acd4ca433425e6dd4032cfc2156c60e34931f2 Bisecting: 8384 revisions left to test after this (roughly 13 steps) [586fb2641371cf7f23a401ab1c79b17e3ec457f4] ASoC: soc-core.c: fixup snd_soc_of_get_dai_link_cpus() testing commit 586fb2641371cf7f23a401ab1c79b17e3ec457f4 gcc compiler: gcc (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2 kernel signature: ccb1ae7e0a8b189a684e18690015097a10cdc9174496f4830c3b4dd0a6f9e38d run #0: crashed: KASAN: use-after-free Read in copy_page_from_iter_atomic run #1: OK run #2: OK run #3: OK run #4: OK run #5: OK run #6: OK run #7: OK run #8: OK run #9: OK run #10: OK run #11: OK run #12: OK run #13: OK run #14: OK run #15: boot failed: INFO: task hung in add_early_randomness run #16: boot failed: INFO: task hung in add_early_randomness run #17: boot failed: INFO: task hung in add_early_randomness run #18: boot failed: INFO: task hung in add_early_randomness run #19: boot failed: INFO: task hung in add_early_randomness # git bisect bad 586fb2641371cf7f23a401ab1c79b17e3ec457f4 Bisecting: 273 revisions left to test after this (roughly 8 steps) [7ed1f83bb4f05fe460984ae49e98d1c1be38fb5f] ASoC: SOF: Compile and runtime IPC version selection testing commit 7ed1f83bb4f05fe460984ae49e98d1c1be38fb5f gcc compiler: gcc (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2 kernel signature: 031a29453c91ee90f9d4619ab1218a4c5ac39f560dffccfd0a74455720450b2c run #0: OK run #1: OK run #2: OK run #3: OK run #4: OK run #5: OK run #6: OK run #7: OK run #8: OK run #9: OK run #10: OK run #11: OK run #12: OK run #13: OK run #14: OK run #15: OK run #16: OK run #17: boot failed: INFO: task hung in add_early_randomness run #18: boot failed: INFO: task hung in add_early_randomness run #19: boot failed: INFO: task hung in add_early_randomness # git bisect good 7ed1f83bb4f05fe460984ae49e98d1c1be38fb5f Bisecting: 136 revisions left to test after this (roughly 7 steps) [bf6dacb784f0efb5a225f6560d693fa71c7fda64] ASoC: hisilicon: Migrate to new style legacy DAI naming flag testing commit bf6dacb784f0efb5a225f6560d693fa71c7fda64 gcc compiler: gcc (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2 kernel signature: cfda1b8fe8248cfca3827b2f1f597c37da05a91683e849fc39bbed39816f542f run #0: OK run #1: OK run #2: OK run #3: OK run #4: OK run #5: OK run #6: OK run #7: OK run #8: OK run #9: OK run #10: OK run #11: OK run #12: OK run #13: OK run #14: OK run #15: OK run #16: OK run #17: OK run #18: OK run #19: boot failed: INFO: task hung in add_early_randomness # git bisect good bf6dacb784f0efb5a225f6560d693fa71c7fda64 Bisecting: 68 revisions left to test after this (roughly 6 steps) [1f1ee5ae7a8b3d30cbfe18561a4e3b7430e96c9f] ASoC: inno_rk3036: Remove now redundant non_legacy_dai_naming flag testing commit 1f1ee5ae7a8b3d30cbfe18561a4e3b7430e96c9f gcc compiler: gcc (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2 kernel signature: 65c359325f7827b4239622b86f87f2b8856773258acf48320454b6e7d007216f run #0: crashed: KASAN: use-after-free Read in copy_page_from_iter_atomic run #1: OK run #2: OK run #3: OK run #4: OK run #5: OK run #6: OK run #7: OK run #8: OK run #9: OK run #10: OK run #11: OK run #12: OK run #13: OK run #14: OK run #15: OK run #16: OK run #17: boot failed: INFO: task hung in add_early_randomness run #18: boot failed: INFO: task hung in add_early_randomness run #19: boot failed: INFO: task hung in add_early_randomness # git bisect bad 1f1ee5ae7a8b3d30cbfe18561a4e3b7430e96c9f Bisecting: 33 revisions left to test after this (roughly 5 steps) [d9e7ddb98604de6470a0fe4f9e2434a55ca35730] ASoC: ad*: Remove now redundant non_legacy_dai_naming flag testing commit d9e7ddb98604de6470a0fe4f9e2434a55ca35730 gcc compiler: gcc (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2 kernel signature: 30f0a6fd9153eee24587482700ff4c8788e7063190394d6cca3733b035f6c353 run #0: OK run #1: OK run #2: OK run #3: OK run #4: OK run #5: OK run #6: OK run #7: OK run #8: OK run #9: OK run #10: OK run #11: OK run #12: OK run #13: OK run #14: OK run #15: OK run #16: OK run #17: OK run #18: OK run #19: boot failed: INFO: task hung in add_early_randomness # git bisect good d9e7ddb98604de6470a0fe4f9e2434a55ca35730 Bisecting: 16 revisions left to test after this (roughly 4 steps) [5947b42cbe0ee580c31f7f327119e7f7c703c25c] ASoC: twl*: Remove now redundant non_legacy_dai_naming flag testing commit 5947b42cbe0ee580c31f7f327119e7f7c703c25c gcc compiler: gcc (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2 kernel signature: 5524a7876085b5c14c9f59b55d1f3b98641c531937724adb63ee17be50e9c7e0 run #0: OK run #1: OK run #2: OK run #3: OK run #4: OK run #5: OK run #6: OK run #7: OK run #8: OK run #9: OK run #10: OK run #11: OK run #12: OK run #13: OK run #14: OK run #15: OK run #16: boot failed: INFO: task hung in add_early_randomness run #17: boot failed: INFO: task hung in add_early_randomness run #18: boot failed: INFO: task hung in add_early_randomness run #19: boot failed: INFO: task hung in add_early_randomness # git bisect good 5947b42cbe0ee580c31f7f327119e7f7c703c25c Bisecting: 7 revisions left to test after this (roughly 3 steps) [35c5013ce7ca3ad55974e3517273a0e42140b5e7] ASoC: cpcap: Remove now redundant non_legacy_dai_naming flag testing commit 35c5013ce7ca3ad55974e3517273a0e42140b5e7 gcc compiler: gcc (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2 kernel signature: 70cf1ed1ea4b4c2d14712b76e0993441a5d38fefee4243679a4fbd21200c319f run #0: OK run #1: OK run #2: OK run #3: OK run #4: OK run #5: OK run #6: OK run #7: OK run #8: OK run #9: OK run #10: OK run #11: OK run #12: OK run #13: OK run #14: OK run #15: OK run #16: OK run #17: boot failed: INFO: task hung in add_early_randomness run #18: boot failed: INFO: task hung in add_early_randomness run #19: boot failed: INFO: task hung in add_early_randomness # git bisect good 35c5013ce7ca3ad55974e3517273a0e42140b5e7 Bisecting: 3 revisions left to test after this (roughly 2 steps) [33b179e7513c30f03277f5de2a845e940a9bde9c] ASoC: gtm601: Remove now redundant non_legacy_dai_naming flag testing commit 33b179e7513c30f03277f5de2a845e940a9bde9c gcc compiler: gcc (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2 kernel signature: 919f04a079b658ef65dc6e0599a02bf392a4ac8c33a13c337a800a89faf37eac run #0: OK run #1: crashed: KASAN: use-after-free Read in copy_page_from_iter_atomic run #2: crashed: KASAN: use-after-free Read in copy_page_from_iter_atomic run #3: OK run #4: OK run #5: OK run #6: OK run #7: OK run #8: OK run #9: OK run #10: OK run #11: OK run #12: OK run #13: OK run #14: OK run #15: OK run #16: OK run #17: boot failed: INFO: task hung in add_early_randomness run #18: boot failed: INFO: task hung in add_early_randomness run #19: boot failed: INFO: task hung in add_early_randomness # git bisect bad 33b179e7513c30f03277f5de2a845e940a9bde9c Bisecting: 1 revision left to test after this (roughly 1 step) [a0b6e4048228829485a43247c12c7774531728c4] ASoC: cx20442: Remove now redundant non_legacy_dai_naming flag testing commit a0b6e4048228829485a43247c12c7774531728c4 gcc compiler: gcc (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2 kernel signature: 02ae4f2a6b5de84a64f48960f26120b8d01395acc4ab29d89fafcd7fa4da6fe4 run #0: crashed: KASAN: use-after-free Read in copy_page_from_iter_atomic run #1: crashed: KASAN: use-after-free Read in copy_page_from_iter_atomic run #2: OK run #3: OK run #4: OK run #5: OK run #6: OK run #7: OK run #8: OK run #9: OK run #10: OK run #11: OK run #12: OK run #13: OK run #14: OK run #15: OK run #16: OK run #17: OK run #18: OK run #19: boot failed: INFO: task hung in add_early_randomness # git bisect bad a0b6e4048228829485a43247c12c7774531728c4 Bisecting: 0 revisions left to test after this (roughly 0 steps) [73a3dca65cbe5e7de20f3453b6881acf3fb3cfbe] ASoC: cq93vc: Remove now redundant non_legacy_dai_naming flag testing commit 73a3dca65cbe5e7de20f3453b6881acf3fb3cfbe gcc compiler: gcc (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2 kernel signature: cb02e1c73011de67c2bc30b29528bbd0a9824dc518a379766da07944f248fa43 run #0: OK run #1: OK run #2: OK run #3: OK run #4: OK run #5: OK run #6: OK run #7: OK run #8: OK run #9: OK run #10: OK run #11: OK run #12: OK run #13: OK run #14: OK run #15: OK run #16: OK run #17: OK run #18: OK run #19: boot failed: INFO: task hung in add_early_randomness # git bisect good 73a3dca65cbe5e7de20f3453b6881acf3fb3cfbe a0b6e4048228829485a43247c12c7774531728c4 is the first bad commit commit a0b6e4048228829485a43247c12c7774531728c4 Author: Charles Keepax Date: Thu Jun 23 13:52:28 2022 +0100 ASoC: cx20442: Remove now redundant non_legacy_dai_naming flag The ASoC core has now been changed to default to the non-legacy DAI naming, as such drivers using the new scheme no longer need to specify the non_legacy_dai_naming flag. Signed-off-by: Charles Keepax Link: https://lore.kernel.org/r/20220623125250.2355471-75-ckeepax@opensource.cirrus.com Signed-off-by: Mark Brown sound/soc/codecs/cx20442.c | 1 - 1 file changed, 1 deletion(-) culprit signature: 02ae4f2a6b5de84a64f48960f26120b8d01395acc4ab29d89fafcd7fa4da6fe4 parent signature: cb02e1c73011de67c2bc30b29528bbd0a9824dc518a379766da07944f248fa43 Reproducer flagged being flaky revisions tested: 16, total time: 8h17m26.005062712s (build: 5h36m37.886852197s, test: 2h36m8.042602674s) first bad commit: a0b6e4048228829485a43247c12c7774531728c4 ASoC: cx20442: Remove now redundant non_legacy_dai_naming flag recipients (to): ["broonie@kernel.org" "ckeepax@opensource.cirrus.com"] recipients (cc): [] crash: KASAN: use-after-free Read in copy_page_from_iter_atomic ================================================================== BUG: KASAN: use-after-free in copy_page_from_iter_atomic+0xb99/0x1560 lib/iov_iter.c:969 Read of size 4096 at addr ffff88806edff000 by task kworker/u4:3/57 CPU: 1 PID: 57 Comm: kworker/u4:3 Not tainted 5.19.0-rc1-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/02/2023 Workqueue: loop3 loop_workfn Call Trace: __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x5b/0x81 lib/dump_stack.c:106 print_address_description.constprop.0.cold+0xeb/0x495 mm/kasan/report.c:313 print_report mm/kasan/report.c:429 [inline] kasan_report.cold+0xf4/0x1c6 mm/kasan/report.c:491 check_region_inline mm/kasan/generic.c:183 [inline] kasan_check_range+0x141/0x190 mm/kasan/generic.c:189 memcpy+0x24/0x60 mm/kasan/shadow.c:65 copy_page_from_iter_atomic+0xb99/0x1560 lib/iov_iter.c:969 generic_perform_write+0x263/0x490 mm/filemap.c:3777 __generic_file_write_iter+0x212/0x400 mm/filemap.c:3897 generic_file_write_iter+0xbd/0x1d0 mm/filemap.c:3929 call_write_iter include/linux/fs.h:2058 [inline] do_iter_readv_writev+0x2b4/0x5b0 fs/read_write.c:742 do_iter_write+0x124/0x620 fs/read_write.c:868 lo_write_bvec drivers/block/loop.c:249 [inline] lo_write_simple drivers/block/loop.c:271 [inline] do_req_filebacked drivers/block/loop.c:495 [inline] loop_handle_cmd drivers/block/loop.c:1859 [inline] loop_process_work+0xb76/0x1bb0 drivers/block/loop.c:1894 process_one_work+0x865/0x13d0 kernel/workqueue.c:2289 worker_thread+0x59c/0xec0 kernel/workqueue.c:2436 kthread+0x29d/0x340 kernel/kthread.c:376 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:302 The buggy address belongs to the physical page: page:ffffea0001bb7fc0 refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x6edff flags: 0xfff00000000000(node=0|zone=1|lastcpupid=0x7ff) raw: 00fff00000000000 ffffea0001d21808 ffffea00007a0d48 0000000000000000 raw: 0000000000000000 0000000000000000 00000000ffffffff 0000000000000000 page dumped because: kasan: bad access detected page_owner tracks the page as freed page last allocated via order 0, migratetype Unmovable, gfp_mask 0x100dc0(GFP_USER|__GFP_ZERO), pid 7585, tgid 7584 (syz-executor.3), ts 207866408174, free_ts 207868192775 prep_new_page mm/page_alloc.c:2456 [inline] get_page_from_freelist+0x1290/0x3b70 mm/page_alloc.c:4198 __alloc_pages+0x1cb/0x520 mm/page_alloc.c:5426 lbmLogInit fs/jfs/jfs_logmgr.c:1816 [inline] lmLogInit+0x32d/0x1590 fs/jfs/jfs_logmgr.c:1270 open_inline_log fs/jfs/jfs_logmgr.c:1175 [inline] lmLogOpen+0x6d0/0x1170 fs/jfs/jfs_logmgr.c:1069 jfs_mount_rw+0x2b9/0x530 fs/jfs/jfs_mount.c:253 jfs_remount+0x450/0x5a0 fs/jfs/super.c:454 reconfigure_super+0x24c/0x8e0 fs/super.c:905 vfs_fsconfig_locked fs/fsopen.c:254 [inline] __do_sys_fsconfig+0x76a/0x970 fs/fsopen.c:439 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x39/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x46/0xb0 page last free stack trace: reset_page_owner include/linux/page_owner.h:24 [inline] free_pages_prepare mm/page_alloc.c:1371 [inline] free_pcp_prepare+0x549/0xd20 mm/page_alloc.c:1421 free_unref_page_prepare mm/page_alloc.c:3343 [inline] free_unref_page+0x1d/0x6a0 mm/page_alloc.c:3438 lbmLogShutdown fs/jfs/jfs_logmgr.c:1864 [inline] lmLogShutdown+0x303/0x590 fs/jfs/jfs_logmgr.c:1684 lmLogClose+0x4af/0x680 fs/jfs/jfs_logmgr.c:1460 jfs_remount+0x346/0x5a0 fs/jfs/super.c:466 reconfigure_super+0x24c/0x8e0 fs/super.c:905 do_remount fs/namespace.c:2702 [inline] path_mount+0x13aa/0x1a40 fs/namespace.c:3362 do_mount fs/namespace.c:3383 [inline] __do_sys_mount fs/namespace.c:3591 [inline] __se_sys_mount fs/namespace.c:3568 [inline] __x64_sys_mount+0x1f9/0x270 fs/namespace.c:3568 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x39/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x46/0xb0 Memory state around the buggy address: ffff88806edfef00: 00 00 00 00 00 fc fc fc fc fc fc fc fc fc fc fc ffff88806edfef80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc >ffff88806edff000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ^ ffff88806edff080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ffff88806edff100: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ==================================================================