|
@@ -387,7 +387,7 @@ ipt_do_table(struct sk_buff *skb,
|
|
verdict = (unsigned)(-v) - 1;
|
|
verdict = (unsigned)(-v) - 1;
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
- if (*stackptr == 0) {
|
|
|
|
|
|
+ if (*stackptr <= origptr) {
|
|
e = get_entry(table_base,
|
|
e = get_entry(table_base,
|
|
private->underflow[hook]);
|
|
private->underflow[hook]);
|
|
pr_debug("Underflow (this is normal) "
|
|
pr_debug("Underflow (this is normal) "
|
|
@@ -427,10 +427,10 @@ ipt_do_table(struct sk_buff *skb,
|
|
/* Verdict */
|
|
/* Verdict */
|
|
break;
|
|
break;
|
|
} while (!acpar.hotdrop);
|
|
} while (!acpar.hotdrop);
|
|
- xt_info_rdunlock_bh();
|
|
|
|
pr_debug("Exiting %s; resetting sp from %u to %u\n",
|
|
pr_debug("Exiting %s; resetting sp from %u to %u\n",
|
|
__func__, *stackptr, origptr);
|
|
__func__, *stackptr, origptr);
|
|
*stackptr = origptr;
|
|
*stackptr = origptr;
|
|
|
|
+ xt_info_rdunlock_bh();
|
|
#ifdef DEBUG_ALLOW_ALL
|
|
#ifdef DEBUG_ALLOW_ALL
|
|
return NF_ACCEPT;
|
|
return NF_ACCEPT;
|
|
#else
|
|
#else
|