From 57d25f22f19f7af6599dec9ec2e3239462feaa72 Mon Sep 17 00:00:00 2001 From: Florian Westphal Date: Thu, 16 Aug 2012 12:01:09 +0200 Subject: [PATCH] xt_psd: avoid if (c=h) do {..} while (c = c->next) It is aquivalent to c=h; while (c) { ..; c = c->next; } which is a bit easier to read. --- extensions/xt_psd.c | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/extensions/xt_psd.c b/extensions/xt_psd.c index 1f4fd4f..197dbf9 100644 --- a/extensions/xt_psd.c +++ b/extensions/xt_psd.c @@ -163,8 +163,8 @@ xt_psd_match(const struct sk_buff *pskb, struct xt_action_param *match) u_int16_t src_port,dest_port; u_int8_t proto; unsigned long now; - struct host *curr, *last, **head; - int hash, count; + struct host *curr, *last = NULL, **head; + int hash, count = 0; /* Parameters from userspace */ const struct xt_psd_info *psdinfo = match->matchinfo; @@ -205,20 +205,21 @@ xt_psd_match(const struct sk_buff *pskb, struct xt_action_param *match) } now = jiffies; + hash = hashfunc(addr); + head = &state.hash[hash]; spin_lock(&state.lock); /* Do we know this source address already? */ - count = 0; - last = NULL; - if ((curr = *(head = &state.hash[hash = hashfunc(addr)])) != NULL) - do { - if (curr->src_addr.s_addr == addr.s_addr) - break; - count++; - if (curr->next != NULL) - last = curr; - } while ((curr = curr->next) != NULL); + curr = *head; + while (curr != NULL) { + if (curr->src_addr.s_addr == addr.s_addr) + break; + count++; + if (curr->next != NULL) + last = curr; + curr = curr->next; + } if (curr != NULL) { /* We know this address, and the entry isn't too old. Update it. */ @@ -266,12 +267,13 @@ xt_psd_match(const struct sk_buff *pskb, struct xt_action_param *match) else head = &last; last = NULL; - if ((curr = *head) != NULL) - do { - if (curr == &state.list[state.index]) - break; - last = curr; - } while ((curr = curr->next) != NULL); + curr = *head; + while (curr != NULL) { + if (curr == &state.list[state.index]) + break; + last = curr; + curr = curr->next; + } /* Then, remove it */ if (curr != NULL) {