* [PATCH] RDMA/core: Remove _ib_copy_validate_udata_in() and _ib_respond_udata() stubs
@ 2026-05-19 18:24 Nathan Chancellor
2026-05-19 22:49 ` Jason Gunthorpe
0 siblings, 1 reply; 2+ messages in thread
From: Nathan Chancellor @ 2026-05-19 18:24 UTC (permalink / raw)
To: Jason Gunthorpe, Leon Romanovsky
Cc: linux-rdma, linux-kernel, Nathan Chancellor
After commit 65b044cee9fb ("RDMA/core: Move the _ib_copy_validate_udata*
functions to ib_core_uverbs"), builds without INFINIBAND_USER_ACCESS
enabled fail with:
drivers/infiniband/core/ib_core_uverbs.c:433:5: error: redefinition of '_ib_copy_validate_udata_in'
433 | int _ib_copy_validate_udata_in(struct ib_udata *udata, void *req,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/rdma/uverbs_std_types.h:10,
from drivers/infiniband/core/uverbs.h:49,
from drivers/infiniband/core/ib_core_uverbs.c:10:
include/rdma/uverbs_ioctl.h:961:19: note: previous definition of '_ib_copy_validate_udata_in' with type 'int(struct ib_udata *, void *, size_t, size_t)' {aka 'int(struct ib_udata *, void *, long unsigned int, long unsigned int)'}
961 | static inline int _ib_copy_validate_udata_in(struct ib_udata *udata, void *req,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/infiniband/core/ib_core_uverbs.c:483:5: error: redefinition of '_ib_respond_udata'
483 | int _ib_respond_udata(struct ib_udata *udata, const void *src, size_t len)
| ^~~~~~~~~~~~~~~~~
include/rdma/uverbs_ioctl.h:968:19: note: previous definition of '_ib_respond_udata' with type 'int(struct ib_udata *, const void *, size_t)' {aka 'int(struct ib_udata *, const void *, long unsigned int)'}
968 | static inline int _ib_respond_udata(struct ib_udata *udata, const void *src,
| ^~~~~~~~~~~~~~~~~
Remove the stubs and adjust the prototypes for _ib_respond_udata() and
_ib_copy_validate_udata_in(), as they will always be available when
INFINIBAND is enabled.
Fixes: 65b044cee9fb ("RDMA/core: Move the _ib_copy_validate_udata* functions to ib_core_uverbs")
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
---
include/rdma/uverbs_ioctl.h | 21 ++++-----------------
1 file changed, 4 insertions(+), 17 deletions(-)
diff --git a/include/rdma/uverbs_ioctl.h b/include/rdma/uverbs_ioctl.h
index e2af17da3e32..7cbdfc259738 100644
--- a/include/rdma/uverbs_ioctl.h
+++ b/include/rdma/uverbs_ioctl.h
@@ -856,6 +856,10 @@ ib_uverbs_get_ucontext(const struct uverbs_attr_bundle *attrs)
return ib_uverbs_get_ucontext_file(attrs->ufile);
}
+int _ib_copy_validate_udata_in(struct ib_udata *udata, void *req,
+ size_t kernel_size, size_t minimum_size);
+int _ib_respond_udata(struct ib_udata *udata, const void *src, size_t len);
+
#if IS_ENABLED(CONFIG_INFINIBAND_USER_ACCESS)
int uverbs_get_flags64(u64 *to, const struct uverbs_attr_bundle *attrs_bundle,
size_t idx, u64 allowed_bits);
@@ -897,10 +901,6 @@ int _uverbs_get_const_unsigned(u64 *to,
size_t idx, u64 upper_bound, u64 *def_val);
int uverbs_copy_to_struct_or_zero(const struct uverbs_attr_bundle *bundle,
size_t idx, const void *from, size_t size);
-
-int _ib_copy_validate_udata_in(struct ib_udata *udata, void *req,
- size_t kernel_size, size_t minimum_size);
-int _ib_respond_udata(struct ib_udata *udata, const void *src, size_t len);
#else
static inline int
uverbs_get_flags64(u64 *to, const struct uverbs_attr_bundle *attrs_bundle,
@@ -957,19 +957,6 @@ _uverbs_get_const_unsigned(u64 *to,
{
return -EINVAL;
}
-
-static inline int _ib_copy_validate_udata_in(struct ib_udata *udata, void *req,
- size_t kernel_size,
- size_t minimum_size)
-{
- return -EINVAL;
-}
-
-static inline int _ib_respond_udata(struct ib_udata *udata, const void *src,
- size_t len)
-{
- return -EINVAL;
-}
#endif
#define uverbs_get_const_signed(_to, _attrs_bundle, _idx) \
---
base-commit: 65b044cee9fb117144f11ab68a318d0055cfbc1b
change-id: 20260519-rdma-core-fix-ib_udata-redef-errors-bce9d0c45f64
Best regards,
--
Cheers,
Nathan
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH] RDMA/core: Remove _ib_copy_validate_udata_in() and _ib_respond_udata() stubs
2026-05-19 18:24 [PATCH] RDMA/core: Remove _ib_copy_validate_udata_in() and _ib_respond_udata() stubs Nathan Chancellor
@ 2026-05-19 22:49 ` Jason Gunthorpe
0 siblings, 0 replies; 2+ messages in thread
From: Jason Gunthorpe @ 2026-05-19 22:49 UTC (permalink / raw)
To: Nathan Chancellor; +Cc: Leon Romanovsky, linux-rdma, linux-kernel
On Tue, May 19, 2026 at 11:24:36AM -0700, Nathan Chancellor wrote:
> After commit 65b044cee9fb ("RDMA/core: Move the _ib_copy_validate_udata*
> functions to ib_core_uverbs"), builds without INFINIBAND_USER_ACCESS
> enabled fail with:
>
> drivers/infiniband/core/ib_core_uverbs.c:433:5: error: redefinition of '_ib_copy_validate_udata_in'
> 433 | int _ib_copy_validate_udata_in(struct ib_udata *udata, void *req,
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from include/rdma/uverbs_std_types.h:10,
> from drivers/infiniband/core/uverbs.h:49,
> from drivers/infiniband/core/ib_core_uverbs.c:10:
> include/rdma/uverbs_ioctl.h:961:19: note: previous definition of '_ib_copy_validate_udata_in' with type 'int(struct ib_udata *, void *, size_t, size_t)' {aka 'int(struct ib_udata *, void *, long unsigned int, long unsigned int)'}
> 961 | static inline int _ib_copy_validate_udata_in(struct ib_udata *udata, void *req,
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~
> drivers/infiniband/core/ib_core_uverbs.c:483:5: error: redefinition of '_ib_respond_udata'
> 483 | int _ib_respond_udata(struct ib_udata *udata, const void *src, size_t len)
> | ^~~~~~~~~~~~~~~~~
> include/rdma/uverbs_ioctl.h:968:19: note: previous definition of '_ib_respond_udata' with type 'int(struct ib_udata *, const void *, size_t)' {aka 'int(struct ib_udata *, const void *, long unsigned int)'}
> 968 | static inline int _ib_respond_udata(struct ib_udata *udata, const void *src,
> | ^~~~~~~~~~~~~~~~~
>
> Remove the stubs and adjust the prototypes for _ib_respond_udata() and
> _ib_copy_validate_udata_in(), as they will always be available when
> INFINIBAND is enabled.
Ugh, we should get rid of this option these days..
The right thing is to #ifdef away the moved C code since it doesn't
get removed by the makefile and keep the static inlines.
Possibly even all of drivers/infiniband/core/ib_core_uverbs.c should
be put under a conditional, I'll look at that later
--- a/drivers/infiniband/core/ib_core_uverbs.c
+++ b/drivers/infiniband/core/ib_core_uverbs.c
@@ -417,6 +417,7 @@ struct ib_device *rdma_udata_to_dev(struct ib_udata *udata)
}
EXPORT_SYMBOL(rdma_udata_to_dev);
+#if IS_ENABLED(CONFIG_INFINIBAND_USER_ACCESS)
uverbs_api_ioctl_handler_fn uverbs_get_handler_fn(struct ib_udata *udata)
{
struct uverbs_attr_bundle *bundle =
@@ -501,3 +502,4 @@ int _ib_respond_udata(struct ib_udata *udata, const void *src, size_t len)
return -EFAULT;
}
EXPORT_SYMBOL(_ib_respond_udata);
+#endif
I guess I'll squash it in, unlucky that 0-day didn't notice this, or
maybe it isn't working anymore...
Thanks,
Jason
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-05-19 22:49 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-19 18:24 [PATCH] RDMA/core: Remove _ib_copy_validate_udata_in() and _ib_respond_udata() stubs Nathan Chancellor
2026-05-19 22:49 ` Jason Gunthorpe
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox