@@ -107,6 +107,9 @@ instance_create(struct nfnl_queue_net *q, u_int16_t queue_num,
unsigned int h;
int err;
+ if (portid == 0)
+ return ERR_PTR(-EINVAL);
+
spin_lock(&q->instances_lock);
if (instance_lookup(q, queue_num)) {
err = -EEXIST;
@@ -506,10 +509,6 @@ nfqnl_enqueue_packet(struct nf_queue_entry *entry, unsigned int queuenum)
}
spin_lock_bh(&queue->lock);
- if (!queue->peer_portid) {
- err = -EINVAL;
- goto err_out_free_nskb;
- }
if (queue->queue_total >= queue->queue_maxlen) {
if (queue->flags & NFQA_CFG_F_FAIL_OPEN) {
failopen = 1;
The portid is the netlink port id of the skb that created the queue. Add test to ensure the portid cannot be 0 at create time, and the check at enqueue time will always be false. Signed-off-by: Florian Westphal <fw@strlen.de> --- net/netfilter/nfnetlink_queue_core.c | 7 +++---- 1 files changed, 3 insertions(+), 4 deletions(-)