Re: [Linux-kernel] [PATCH v2] net/netfilter/x_tables.c: use __seq_open_private()

From: Rob Jones
Date: Wed Sep 24 2014 - 04:15:11 EST




On 23/09/14 22:40, Pablo Neira Ayuso wrote:
On Tue, Sep 23, 2014 at 06:46:27PM +0100, Ben Hutchings wrote:
On Tue, 2014-09-23 at 18:05 +0100, Rob Jones wrote:
Reduce boilerplate code by using __seq_open_private() instead of seq_open()
in xt_match_open() and xt_target_open().

Signed-off-by: Rob Jones <rob.jones@xxxxxxxxxxxxxxx>
---

This patch uses an existing variant of seq_open() to reduce the kernel code
size.

The only significant variation from the pre-existing code is the fact that
__seq_open_private() calls kzalloc() rather than kmalloc(), which could
conceivably have an impact on timing.

This version 2 incorporates a minor initialisation simplification (resulting
from kzalloc() being used) requested by netfilter-devel@xxxxxxxxxxxxxxx
[...]
--- a/net/netfilter/x_tables.c
+++ b/net/netfilter/x_tables.c
@@ -1080,7 +1080,6 @@ static void *xt_mttg_seq_start(struct seq_file *seq, loff_t *pos,
struct nf_mttg_trav *trav = seq->private;
unsigned int j;

- trav->class = MTTG_TRAV_INIT;
for (j = 0; j < *pos; ++j)
if (xt_mttg_seq_next(seq, NULL, NULL, is_target) == NULL)
return NULL;
[...]

I'm fairly sure this simplification is wrong, as xt_mttg_seq_start() is
potentially called multiple times on the same file handle.

Well spotted Ben.


Right. I'm going to take v1 of this patch instead, sorry for the
inconvenience Rob.

No problem at all. It gave me something to do on the train home last
night :-)

--
Rob Jones
Codethink Ltd
mailto:rob.jones@xxxxxxxxxxxxxxx
tel:+44 161 236 5575
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/