From: David Laight Wrappers for autoterminating nested for() loops have been added to compiler.h, use them to hide the gory details. Signed-off-by: David Laight --- include/linux/uaccess.h | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h index 809e4f7dfdbd..64bc2492eb99 100644 --- a/include/linux/uaccess.h +++ b/include/linux/uaccess.h @@ -736,13 +736,10 @@ static __always_inline void __scoped_user_rw_access_end(const void *p) * * Don't use directly. Use scoped_masked_user_$MODE_access() instead. */ -#define __scoped_user_access(mode, uptr, size, elbl) \ -for (bool done = false; !done; done = true) \ - for (auto _tmpptr = __scoped_user_access_begin(mode, uptr, size, elbl); \ - !done; done = true) \ - /* Force modified pointer usage within the scope */ \ - for (const auto uptr __cleanup(__scoped_user_##mode##_access_end) = \ - _tmpptr; !done; done = true) +#define __scoped_user_access(mode, uptr, size, elbl) \ + with (auto _tmpptr = __scoped_user_access_begin(mode, uptr, size, elbl)) \ + /* Force modified pointer usage within the scope */ \ + and_with (const auto uptr __cleanup(__scoped_user_##mode##_access_end) = _tmpptr) /** * scoped_user_read_access_size - Start a scoped user read access with given size -- 2.39.5