Message ID | 20231026114522.567140-1-giulio.benetti@benettiengineering.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [nfs-utils,1/2] Fix build failure due to glibc <= 2.24 and check for Linux 3.17+ | expand |
interesting, I yesterday sent patch [1] solving the same problem (although it might not be that obvious from the patchset name). Let's see which one will be taken. Kind regards, Petr [1] https://lore.kernel.org/linux-nfs/20231025205720.GB460410@pevik/T/#m4c02286afae09318f6b95ff837750708d5065cd5
Hi Petr, On 26/10/23 21:47, Petr Vorel wrote: > interesting, I yesterday sent patch [1] solving the same problem (although it > might not be that obvious from the patchset name). Let's see which one will be > taken. > > Kind regards, > Petr > > [1] https://lore.kernel.org/linux-nfs/20231025205720.GB460410@pevik/T/#m4c02286afae09318f6b95ff837750708d5065cd5 I totally forgotten to check Patchwork before working on it. Your patch looks good, better than mine. Maybe you can improve the part of the syscall because it's not always available. You can then send a patch for Buildroot too with the patch you've pointed since there you're nfs-utils package Maintainer too.
Hello, On 10/26/23 3:47 PM, Petr Vorel wrote: > interesting, I yesterday sent patch [1] solving the same problem (although it > might not be that obvious from the patchset name). Let's see which one will be > taken. > > Kind regards, > Petr > > [1] https://lore.kernel.org/linux-nfs/20231025205720.GB460410@pevik/T/#m4c02286afae09318f6b95ff837750708d5065cd5 There are a number of patches in the above link Could you please post, in the usual format, that fixes the issue. tia, steved.
Hi Steve, Giulio, Richard, > Hello, > On 10/26/23 3:47 PM, Petr Vorel wrote: > > interesting, I yesterday sent patch [1] solving the same problem (although it > > might not be that obvious from the patchset name). Let's see which one will be > > taken. > > Kind regards, > > Petr > > [1] https://lore.kernel.org/linux-nfs/20231025205720.GB460410@pevik/T/#m4c02286afae09318f6b95ff837750708d5065cd5 > There are a number of patches in the above link > Could you please post, in the usual format, that > fixes the issue. @Steve IMHO all build failures on glibc <= 2.24 and Linux 3.17+ has been fixed in f92fd6ca ("support/backend_sqlite.c: Add getrandom() fallback") [1]. I don't see any new issue in the thread which is from 2023. Are you just double checking if any patch was left on ML? Or do I miss something (it's Friday maybe I'm just tired)? @Giulio @Richard feel free to correct me. Kind regards, Petr > tia, > steved. [1] https://git.linux-nfs.org/?p=steved/nfs-utils.git;a=commit;h=f92fd6ca815025c435dabf45da28472ac0aa04a4
On 10/18/24 9:43 AM, Petr Vorel wrote: > Hi Steve, Giulio, Richard, > >> Hello, > >> On 10/26/23 3:47 PM, Petr Vorel wrote: >>> interesting, I yesterday sent patch [1] solving the same problem (although it >>> might not be that obvious from the patchset name). Let's see which one will be >>> taken. > >>> Kind regards, >>> Petr > >>> [1] https://lore.kernel.org/linux-nfs/20231025205720.GB460410@pevik/T/#m4c02286afae09318f6b95ff837750708d5065cd5 >> There are a number of patches in the above link >> Could you please post, in the usual format, that >> fixes the issue. > > @Steve IMHO all build failures on glibc <= 2.24 and Linux 3.17+ has been fixed > in f92fd6ca ("support/backend_sqlite.c: Add getrandom() fallback") [1]. Perfect! Thank you! steved. > > I don't see any new issue in the thread which is from 2023. > Are you just double checking if any patch was left on ML? > Or do I miss something (it's Friday maybe I'm just tired)? > > @Giulio @Richard feel free to correct me. > > Kind regards, > Petr > >> tia, > >> steved. > > [1] https://git.linux-nfs.org/?p=steved/nfs-utils.git;a=commit;h=f92fd6ca815025c435dabf45da28472ac0aa04a4 >
diff --git a/configure.ac b/configure.ac index 6fbcb974..7efca90c 100644 --- a/configure.ac +++ b/configure.ac @@ -328,6 +328,38 @@ AC_CHECK_HEADERS([sched.h], [], []) AC_CHECK_FUNCS([unshare fstatat statx], [] , []) AC_LIBPTHREAD([]) +AC_MSG_CHECKING([for getrandom (Linux 3.17+, glibc 2.25+)]) +AC_LINK_IFELSE([AC_LANG_SOURCE([ + #include <stdlib.h> /* for NULL */ + #include <sys/random.h> + int main() { + return getrandom(NULL, 0U, 0U); + } +])], [ + AC_DEFINE([HAVE_GETRANDOM], [1], + [Define to 1 if you have the `getrandom' function.]) + AC_MSG_RESULT([yes]) +], [ + AC_MSG_RESULT([no]) + + AC_MSG_CHECKING([for syscall SYS_getrandom (Linux 3.17+)]) + AC_LINK_IFELSE([AC_LANG_SOURCE([ + #include <stdlib.h> /* for NULL */ + #include <unistd.h> /* for syscall */ + #include <sys/syscall.h> /* for SYS_getrandom */ + int main() { + syscall(SYS_getrandom, NULL, 0, 0); + return 0; + } + ])], [ + AC_DEFINE([HAVE_SYSCALL_GETRANDOM], [1], + [Define to 1 if you have `syscall' and `SYS_getrandom'.]) + AC_MSG_RESULT([yes]) + ], [ + AC_MSG_ERROR(['syscall' and 'SYS_getrandom' not found.]) + ]) +]) + # rpc/rpc.h can come from the glibc or from libtirpc nfsutils_save_CPPFLAGS="${CPPFLAGS}" CPPFLAGS="${CPPFLAGS} ${TIRPC_CFLAGS}" diff --git a/support/reexport/backend_sqlite.c b/support/reexport/backend_sqlite.c index 132f30c4..f1e390bc 100644 --- a/support/reexport/backend_sqlite.c +++ b/support/reexport/backend_sqlite.c @@ -7,13 +7,28 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> -#include <sys/random.h> #include <unistd.h> #include "conffile.h" #include "reexport_backend.h" #include "xlog.h" +/* Fix up glibc <= 2.24 not having getrandom() */ +#if defined HAVE_GETRANDOM +#include <sys/random.h> +#else +#include <sys/syscall.h> +static ssize_t getrandom(void *buffer, size_t length, unsigned flags) +{ +# if defined(__NR_getrandom) + return syscall(__NR_getrandom, buffer, length, flags); +# else + errno = ENOSYS; + return -1; +# endif +} +#endif + #define REEXPDB_DBFILE NFS_STATEDIR "/reexpdb.sqlite3" #define REEXPDB_DBFILE_WAIT_USEC (5000)
Function getrandom() is present only with glibc 2.24+ so add a direct syscall otherwise. This is only possible with Linux 3.17+ so let's also check for it and in case emit error on autotools configure. Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com> --- configure.ac | 32 +++++++++++++++++++++++++++++++ support/reexport/backend_sqlite.c | 17 +++++++++++++++- 2 files changed, 48 insertions(+), 1 deletion(-)