On Wed, Nov 24, 2021 at 07:20:24PM +0000, Catalin Marinas wrote: > Commit a48b73eca4ce ("btrfs: fix potential deadlock in the search > ioctl") addressed a lockdep warning by pre-faulting the user pages and > attempting the copy_to_user_nofault() in an infinite loop. On > architectures like arm64 with MTE, an access may fault within a page at > a location different from what fault_in_writeable() probed. Since the > sk_offset is rewound to the previous struct btrfs_ioctl_search_header > boundary, there is no guaranteed forward progress and search_ioctl() may > live-lock. > > Use fault_in_exact_writeable() instead which probes the entire user > buffer for faults at sub-page granularity. > > Signed-off-by: Catalin Marinas <catalin.marinas@xxxxxxx> > Reported-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx> Acked-by: David Sterba <dsterba@xxxxxxxx>