[NETFILTER]: nf_queue: remove unnecessary hook existance check
We hold a module reference for each queued packet, so the hook that queued the packet can't disappear. Also remove an obsolete comment stating the opposite. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
8b1cf0db2a
Коммит
fb46990dba
|
@ -51,11 +51,6 @@ void nf_unregister_afinfo(struct nf_afinfo *afinfo)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(nf_unregister_afinfo);
|
||||
|
||||
/* In this code, we can be waiting indefinitely for userspace to
|
||||
* service a packet if a hook returns NF_QUEUE. We could keep a count
|
||||
* of skbuffs queued for userspace, and not deregister a hook unless
|
||||
* this is zero, but that sucks. Now, we simply check when the
|
||||
* packets come back: if the hook is gone, the packet is discarded. */
|
||||
struct list_head nf_hooks[NPROTO][NF_MAX_HOOKS] __read_mostly;
|
||||
EXPORT_SYMBOL(nf_hooks);
|
||||
static DEFINE_MUTEX(nf_hook_mutex);
|
||||
|
|
|
@ -223,7 +223,6 @@ void nf_reinject(struct sk_buff *skb, struct nf_info *info,
|
|||
unsigned int verdict)
|
||||
{
|
||||
struct list_head *elem = &info->elem->list;
|
||||
struct list_head *i;
|
||||
struct nf_afinfo *afinfo;
|
||||
|
||||
rcu_read_lock();
|
||||
|
@ -245,18 +244,6 @@ void nf_reinject(struct sk_buff *skb, struct nf_info *info,
|
|||
/* Drop reference to owner of hook which queued us. */
|
||||
module_put(info->elem->owner);
|
||||
|
||||
list_for_each_rcu(i, &nf_hooks[info->pf][info->hook]) {
|
||||
if (i == elem)
|
||||
break;
|
||||
}
|
||||
|
||||
if (i == &nf_hooks[info->pf][info->hook]) {
|
||||
/* The module which sent it to userspace is gone. */
|
||||
NFDEBUG("%s: module disappeared, dropping packet.\n",
|
||||
__FUNCTION__);
|
||||
verdict = NF_DROP;
|
||||
}
|
||||
|
||||
/* Continue traversal iff userspace said ok... */
|
||||
if (verdict == NF_REPEAT) {
|
||||
elem = elem->prev;
|
||||
|
|
Загрузка…
Ссылка в новой задаче