Avoid possibility of division by zero
When hz > 1000, msec / (1000 / hz) results in division by zero. I found somewhere in FreeBSD using howmany(msec * hz, 1000) to convert ms to ticks, avoiding the potential for a zero in the divisor. Reviewed-by: Alexander Motin <mav@FreeBSD.org> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Ryan Moeller <freqlabs@FreeBSD.org> Closes #10894
This commit is contained in:
parent
189272f78a
commit
ebc4b52369
|
@ -72,7 +72,7 @@ extern struct mtx zfs_debug_mtx;
|
|||
} \
|
||||
} while (0)
|
||||
|
||||
#define MSEC_TO_TICK(msec) ((msec) / (MILLISEC / hz))
|
||||
#define MSEC_TO_TICK(msec) (howmany((hrtime_t)(msec) * hz, MILLISEC))
|
||||
extern int hz;
|
||||
extern int tick;
|
||||
typedef int fstrans_cookie_t;
|
||||
|
|
|
@ -602,9 +602,9 @@ typedef struct vsecattr {
|
|||
extern void delay(clock_t ticks);
|
||||
|
||||
#define SEC_TO_TICK(sec) ((sec) * hz)
|
||||
#define MSEC_TO_TICK(msec) ((msec) / (MILLISEC / hz))
|
||||
#define USEC_TO_TICK(usec) ((usec) / (MICROSEC / hz))
|
||||
#define NSEC_TO_TICK(usec) ((usec) / (NANOSEC / hz))
|
||||
#define MSEC_TO_TICK(msec) (howmany((hrtime_t)(msec) * hz, MILLISEC))
|
||||
#define USEC_TO_TICK(usec) (howmany((hrtime_t)(usec) * hz, MICROSEC))
|
||||
#define NSEC_TO_TICK(nsec) (howmany((hrtime_t)(nsec) * hz, NANOSEC))
|
||||
|
||||
#define max_ncpus 64
|
||||
#define boot_ncpus (sysconf(_SC_NPROCESSORS_ONLN))
|
||||
|
|
Loading…
Reference in New Issue