From: Andrew S. Johnson Date: Sun, 21 Feb 2021 14:50:50 +0000 (-0700) Subject: xt_pknock: use do_div for long division X-Git-Tag: v3.16~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3aa4ca3eaff8933cb733ed571d04db59d6feafe1;p=thirdparty%2Fxtables-addons.git xt_pknock: use do_div for long division --- diff --git a/extensions/pknock/xt_pknock.c b/extensions/pknock/xt_pknock.c index db21948..8fc3358 100644 --- a/extensions/pknock/xt_pknock.c +++ b/extensions/pknock/xt_pknock.c @@ -335,7 +335,8 @@ is_interknock_time_exceeded(const struct peer *peer, unsigned int max_time) static inline bool has_logged_during_this_minute(const struct peer *peer) { - return peer != NULL && peer->login_sec / 60 == ktime_get_seconds() / 60; + unsigned long x = ktime_get_seconds(), y = peer->login_sec; + return peer != NULL && do_div(y, 60) == do_div(x, 60); } /** @@ -709,6 +710,7 @@ has_secret(const unsigned char *secret, unsigned int secret_len, uint32_t ipsrc, unsigned int hexa_size; int ret; bool fret = false; + unsigned long x; unsigned int epoch_min; if (payload_len == 0) @@ -727,7 +729,8 @@ has_secret(const unsigned char *secret, unsigned int secret_len, uint32_t ipsrc, hexresult = kzalloc(hexa_size, GFP_ATOMIC); if (hexresult == NULL) return false; - epoch_min = ktime_get_seconds() / 60; + x = ktime_get_seconds(); + epoch_min = do_div(x, 60); ret = crypto_shash_setkey(crypto.tfm, secret, secret_len); if (ret != 0) {