From 93e55163dc9978093b46b7000ae4aa7e8fbb02d4 Mon Sep 17 00:00:00 2001 From: Douglas Gilbert Date: Mon, 29 Mar 2021 01:27:17 +0000 Subject: sg_vpd: fix vendor struct opts_t alignment; 3rd attempt to release 1.46 git-svn-id: https://svn.bingwo.ca/repos/sg3_utils/trunk@886 6180dd3e-e324-4e3e-922d-17de1ae2f315 --- testing/sg_mrq_dd.cpp | 18 +++++++++++++----- testing/sgh_dd.cpp | 40 +++++++++++++++++++++++++++------------- 2 files changed, 40 insertions(+), 18 deletions(-) (limited to 'testing') diff --git a/testing/sg_mrq_dd.cpp b/testing/sg_mrq_dd.cpp index 9ce3eb5b..bed16233 100644 --- a/testing/sg_mrq_dd.cpp +++ b/testing/sg_mrq_dd.cpp @@ -30,7 +30,7 @@ * */ -static const char * version_str = "1.22 20210321"; +static const char * version_str = "1.23 20210328"; #define _XOPEN_SOURCE 600 #ifndef _GNU_SOURCE @@ -62,7 +62,6 @@ static const char * version_str = "1.22 20210321"; #include /* for MEM_MAJOR, SCSI_GENERIC_MAJOR, etc */ #include /* for BLKSSZGET and friends */ #include /* for mmap() system call */ -#include /* for getrandom() system call */ #include #include @@ -77,6 +76,10 @@ static const char * version_str = "1.22 20210321"; #include "config.h" #endif +#ifdef HAVE_GETRANDOM +#include /* for getrandom() system call */ +#endif + #ifndef HAVE_LINUX_SG_V4_HDR /* Kernel uapi header contain __user decorations on user space pointers * to indicate they are unsafe in the kernel space. However glibc takes @@ -1294,12 +1297,17 @@ read_write_thread(struct global_collection * clp, int id, bool singleton) rep->same_sg = true; } if (clp->in_flags.random) { - ssize_t ssz; +#ifdef HAVE_GETRANDOM + ssize_t ssz = getrandom(&rep->seed, sizeof(rep->seed), GRND_NONBLOCK); - ssz = getrandom(&rep->seed, sizeof(rep->seed), GRND_NONBLOCK); - if (ssz < (ssize_t)sizeof(rep->seed)) + if (ssz < (ssize_t)sizeof(rep->seed)) { pr2serr_lk("[%d] %s: getrandom() failed, ret=%d\n", id, __func__, (int)ssz); + rep->seed = (long)time(NULL); + } +#else + rep->seed = (long)time(NULL); /* use seconds since epoch as proxy */ +#endif if (vb > 1) pr2serr_lk("[%d] %s: seed=%ld\n", id, __func__, rep->seed); srand48_r(rep->seed, &rep->drand); diff --git a/testing/sgh_dd.cpp b/testing/sgh_dd.cpp index a678cad5..c1b34218 100644 --- a/testing/sgh_dd.cpp +++ b/testing/sgh_dd.cpp @@ -36,7 +36,7 @@ * renamed [20181221] */ -static const char * version_str = "2.00 20210305"; +static const char * version_str = "2.01 20210328"; #define _XOPEN_SOURCE 600 #ifndef _GNU_SOURCE @@ -68,7 +68,6 @@ static const char * version_str = "2.00 20210305"; #include /* for MEM_MAJOR, SCSI_GENERIC_MAJOR, etc */ #include /* for BLKSSZGET and friends */ #include /* for mmap() system call */ -#include /* for getrandom() system call */ #include #include @@ -82,6 +81,10 @@ static const char * version_str = "2.00 20210305"; #include "config.h" #endif +#ifdef HAVE_GETRANDOM +#include /* for getrandom() system call */ +#endif + #ifndef HAVE_LINUX_SG_V4_HDR /* Kernel uapi header contain __user decorations on user space pointers * to indicate they are unsafe in the kernel space. However glibc takes @@ -1219,15 +1222,21 @@ mrq_abort_thread(void * v_maip) int n = 0; int seed; unsigned int rn; - ssize_t ssz; Mrq_abort_info l_mai = *(Mrq_abort_info *)v_maip; struct sg_io_v4 ctl_v4; - ssz = getrandom(&rn, sizeof(rn), GRND_NONBLOCK); - if (ssz < (ssize_t)sizeof(rn)) - pr2serr_lk("%s: getrandom() failed, returned %d\n", __func__, - (int)ssz); - seed = rn; +#ifdef HAVE_GETRANDOM + { + ssize_t ssz = getrandom(&seed, sizeof(seed), GRND_NONBLOCK); + + if (ssz < (ssize_t)sizeof(seed)) { + pr2serr("getrandom() failed, ret=%d\n", (int)ssz); + seed = (int)time(NULL); + } + } +#else + seed = (int)time(NULL); /* use seconds since epoch as proxy */ +#endif if (l_mai.debug) pr2serr_lk("%s: from_id=%d: to abort mrq_pack_id=%d\n", __func__, l_mai.from_tid, l_mai.mrq_id); @@ -1469,12 +1478,17 @@ read_write_thread(void * v_tip) rep->only_out_sg = true; if (clp->in_flags.random) { - ssize_t ssz; +#ifdef HAVE_GETRANDOM + ssize_t ssz = getrandom(&rep->seed, sizeof(rep->seed), GRND_NONBLOCK); - ssz = getrandom(&rep->seed, sizeof(rep->seed), 0); - if (ssz < (ssize_t)sizeof(rep->seed)) - pr2serr_lk("thread=%d: getrandom() failed, ret=%d\n", rep->id, - (int)ssz); + if (ssz < (ssize_t)sizeof(rep->seed)) { + pr2serr_lk("thread=%d: getrandom() failed, ret=%d\n", + rep->id, (int)ssz); + rep->seed = (long)time(NULL); + } +#else + rep->seed = (long)time(NULL); /* use seconds since epoch as proxy */ +#endif if (vb > 1) pr2serr_lk("thread=%d: seed=%ld\n", rep->id, rep->seed); srand48_r(rep->seed, &rep->drand); -- cgit v1.2.3