All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Revert "net: Remove state argument from skb_find_text()"
@ 2017-02-05  5:48 Igor Pylypiv
  2017-02-07 12:36 ` Pablo Neira Ayuso
  2017-02-07 15:53 ` David Miller
  0 siblings, 2 replies; 8+ messages in thread
From: Igor Pylypiv @ 2017-02-05  5:48 UTC (permalink / raw)
  To: David S . Miller, Pablo Neira Ayuso; +Cc: netdev, netfilter-devel, coreteam

This reverts commit 059a2440fd3cf4ec57735db2c0a90401cde84fca.

Textsearch state parameter should be passed by pointer because
its resulting value is needed for call to textsearch_next().

Signed-off-by: Igor Pylypiv <igor.pylypiv@gmail.com>
---
 include/linux/skbuff.h              |  3 ++-
 net/core/skbuff.c                   |  9 +++++----
 net/netfilter/nf_conntrack_amanda.c | 10 +++++++---
 net/netfilter/xt_string.c           |  3 ++-
 net/sched/em_text.c                 |  3 ++-
 5 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 11b60b6..70110ca 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -1028,7 +1028,8 @@ unsigned int skb_seq_read(unsigned int consumed, const u8 **data,
 void skb_abort_seq_read(struct skb_seq_state *st);
 
 unsigned int skb_find_text(struct sk_buff *skb, unsigned int from,
-			   unsigned int to, struct ts_config *config);
+			   unsigned int to, struct ts_config *config,
+			   struct ts_state *state);
 
 /*
  * Packet hash types specify the type of hash in skb_set_hash.
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index daa6058..3041763 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -2918,6 +2918,7 @@ static void skb_ts_finish(struct ts_config *conf, struct ts_state *state)
  * @from: search offset
  * @to: search limit
  * @config: textsearch configuration
+ * @state: uninitialized textsearch state variable
  *
  * Finds a pattern in the skb data according to the specified
  * textsearch configuration. Use textsearch_next() to retrieve
@@ -2925,17 +2926,17 @@ static void skb_ts_finish(struct ts_config *conf, struct ts_state *state)
  * to the first occurrence or UINT_MAX if no match was found.
  */
 unsigned int skb_find_text(struct sk_buff *skb, unsigned int from,
-			   unsigned int to, struct ts_config *config)
+			   unsigned int to, struct ts_config *config,
+			   struct ts_state *state)
 {
-	struct ts_state state;
 	unsigned int ret;
 
 	config->get_next_block = skb_ts_get_next_block;
 	config->finish = skb_ts_finish;
 
-	skb_prepare_seq_read(skb, from, to, TS_SKB_CB(&state));
+	skb_prepare_seq_read(skb, from, to, TS_SKB_CB(state));
 
-	ret = textsearch_find(config, &state);
+	ret = textsearch_find(config, state);
 	return (ret <= to - from ? ret : UINT_MAX);
 }
 EXPORT_SYMBOL(skb_find_text);
diff --git a/net/netfilter/nf_conntrack_amanda.c b/net/netfilter/nf_conntrack_amanda.c
index 57a26cc..b8b95f4 100644
--- a/net/netfilter/nf_conntrack_amanda.c
+++ b/net/netfilter/nf_conntrack_amanda.c
@@ -88,6 +88,7 @@ static int amanda_help(struct sk_buff *skb,
 		       struct nf_conn *ct,
 		       enum ip_conntrack_info ctinfo)
 {
+	struct ts_state ts;
 	struct nf_conntrack_expect *exp;
 	struct nf_conntrack_tuple *tuple;
 	unsigned int dataoff, start, stop, off, i;
@@ -112,20 +113,23 @@ static int amanda_help(struct sk_buff *skb,
 		return NF_ACCEPT;
 	}
 
+	memset(&ts, 0, sizeof(ts));
 	start = skb_find_text(skb, dataoff, skb->len,
-			      search[SEARCH_CONNECT].ts);
+			      search[SEARCH_CONNECT].ts, &ts);
 	if (start == UINT_MAX)
 		goto out;
 	start += dataoff + search[SEARCH_CONNECT].len;
 
+	memset(&ts, 0, sizeof(ts));
 	stop = skb_find_text(skb, start, skb->len,
-			     search[SEARCH_NEWLINE].ts);
+			     search[SEARCH_NEWLINE].ts, &ts);
 	if (stop == UINT_MAX)
 		goto out;
 	stop += start;
 
 	for (i = SEARCH_DATA; i <= SEARCH_INDEX; i++) {
-		off = skb_find_text(skb, start, stop, search[i].ts);
+		memset(&ts, 0, sizeof(ts));
+		off = skb_find_text(skb, start, stop, search[i].ts, &ts);
 		if (off == UINT_MAX)
 			continue;
 		off += start + search[i].len;
diff --git a/net/netfilter/xt_string.c b/net/netfilter/xt_string.c
index 423293e..055a6aa 100644
--- a/net/netfilter/xt_string.c
+++ b/net/netfilter/xt_string.c
@@ -26,12 +26,13 @@ static bool
 string_mt(const struct sk_buff *skb, struct xt_action_param *par)
 {
 	const struct xt_string_info *conf = par->matchinfo;
+	struct ts_state state;
 	bool invert;
 
 	invert = conf->u.v1.flags & XT_STRING_FLAG_INVERT;
 
 	return (skb_find_text((struct sk_buff *)skb, conf->from_offset,
-			     conf->to_offset, conf->config)
+			     conf->to_offset, conf->config, &state)
 			     != UINT_MAX) ^ invert;
 }
 
diff --git a/net/sched/em_text.c b/net/sched/em_text.c
index 73e2ed5..f03c3de 100644
--- a/net/sched/em_text.c
+++ b/net/sched/em_text.c
@@ -34,6 +34,7 @@ static int em_text_match(struct sk_buff *skb, struct tcf_ematch *m,
 {
 	struct text_match *tm = EM_TEXT_PRIV(m);
 	int from, to;
+	struct ts_state state;
 
 	from = tcf_get_base_ptr(skb, tm->from_layer) - skb->data;
 	from += tm->from_offset;
@@ -41,7 +42,7 @@ static int em_text_match(struct sk_buff *skb, struct tcf_ematch *m,
 	to = tcf_get_base_ptr(skb, tm->to_layer) - skb->data;
 	to += tm->to_offset;
 
-	return skb_find_text(skb, from, to, tm->config) != UINT_MAX;
+	return skb_find_text(skb, from, to, tm->config, &state) != UINT_MAX;
 }
 
 static int em_text_change(struct net *net, void *data, int len,
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] Revert "net: Remove state argument from skb_find_text()"
  2017-02-05  5:48 [PATCH] Revert "net: Remove state argument from skb_find_text()" Igor Pylypiv
@ 2017-02-07 12:36 ` Pablo Neira Ayuso
  2017-02-07 15:53 ` David Miller
  1 sibling, 0 replies; 8+ messages in thread
From: Pablo Neira Ayuso @ 2017-02-07 12:36 UTC (permalink / raw)
  To: Igor Pylypiv; +Cc: David S . Miller, netdev, netfilter-devel, coreteam

On Sat, Feb 04, 2017 at 09:48:30PM -0800, Igor Pylypiv wrote:
> This reverts commit 059a2440fd3cf4ec57735db2c0a90401cde84fca.
> 
> Textsearch state parameter should be passed by pointer because
> its resulting value is needed for call to textsearch_next().

You're right this renders textsearch_next() useless.

But I remember David took this one time ago because there are no
clients for textsearch_next() in the tree, apart from
textsearch_find().

Am I missing anything?

Thanks.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] Revert "net: Remove state argument from skb_find_text()"
  2017-02-05  5:48 [PATCH] Revert "net: Remove state argument from skb_find_text()" Igor Pylypiv
  2017-02-07 12:36 ` Pablo Neira Ayuso
@ 2017-02-07 15:53 ` David Miller
  2017-02-08  2:45   ` [PATCH] net: fix description of skb_find_text() according to removed functionality Igor Pylypiv
  1 sibling, 1 reply; 8+ messages in thread
From: David Miller @ 2017-02-07 15:53 UTC (permalink / raw)
  To: igor.pylypiv; +Cc: pablo, netdev, netfilter-devel, coreteam

From: Igor Pylypiv <igor.pylypiv@gmail.com>
Date: Sat,  4 Feb 2017 21:48:30 -0800

> This reverts commit 059a2440fd3cf4ec57735db2c0a90401cde84fca.
> 
> Textsearch state parameter should be passed by pointer because
> its resulting value is needed for call to textsearch_next().
> 
> Signed-off-by: Igor Pylypiv <igor.pylypiv@gmail.com>

There are no users of this functionality.

Once you add one, you can submit this patch alongside of it.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH] net: fix description of skb_find_text() according to removed functionality
  2017-02-07 15:53 ` David Miller
@ 2017-02-08  2:45   ` Igor Pylypiv
  2017-02-08  3:02     ` David Miller
  2017-02-08  8:44     ` Pablo Neira Ayuso
  0 siblings, 2 replies; 8+ messages in thread
From: Igor Pylypiv @ 2017-02-08  2:45 UTC (permalink / raw)
  To: David S . Miller, Pablo Neira Ayuso; +Cc: netdev, netfilter-devel, coreteam

Textsearch state parameter was moved to local scope of the function.
This eliminates usage of textsearch_next() to find subsequent occurrences.

Fixes: 59a2440fd3cf ("net: Remove state argument from skb_find_text()")
Signed-off-by: Igor Pylypiv <igor.pylypiv@gmail.com>
---
 net/core/skbuff.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 9ccba86..90366c5 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -2919,9 +2919,8 @@ static void skb_ts_finish(struct ts_config *conf, struct ts_state *state)
  * @config: textsearch configuration
  *
  * Finds a pattern in the skb data according to the specified
- * textsearch configuration. Use textsearch_next() to retrieve
- * subsequent occurrences of the pattern. Returns the offset
- * to the first occurrence or UINT_MAX if no match was found.
+ * textsearch configuration. Returns the offset to the first
+ * occurrence or UINT_MAX if no match was found.
  */
 unsigned int skb_find_text(struct sk_buff *skb, unsigned int from,
 			   unsigned int to, struct ts_config *config)

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] net: fix description of skb_find_text() according to removed functionality
  2017-02-08  2:45   ` [PATCH] net: fix description of skb_find_text() according to removed functionality Igor Pylypiv
@ 2017-02-08  3:02     ` David Miller
  2017-02-08  8:44     ` Pablo Neira Ayuso
  1 sibling, 0 replies; 8+ messages in thread
From: David Miller @ 2017-02-08  3:02 UTC (permalink / raw)
  To: igor.pylypiv; +Cc: pablo, netdev, netfilter-devel, coreteam


How about you make edits to this interface when you add an in-tree
user as we mentioned in our responses to your previous patch?

Thank you.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] net: fix description of skb_find_text() according to removed functionality
  2017-02-08  2:45   ` [PATCH] net: fix description of skb_find_text() according to removed functionality Igor Pylypiv
  2017-02-08  3:02     ` David Miller
@ 2017-02-08  8:44     ` Pablo Neira Ayuso
  1 sibling, 0 replies; 8+ messages in thread
From: Pablo Neira Ayuso @ 2017-02-08  8:44 UTC (permalink / raw)
  To: Igor Pylypiv; +Cc: David S . Miller, netdev, netfilter-devel, coreteam

On Tue, Feb 07, 2017 at 06:45:37PM -0800, Igor Pylypiv wrote:
> Textsearch state parameter was moved to local scope of the function.
> This eliminates usage of textsearch_next() to find subsequent occurrences.
> 
> Fixes: 59a2440fd3cf ("net: Remove state argument from skb_find_text()")
> Signed-off-by: Igor Pylypiv <igor.pylypiv@gmail.com>

Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] net: fix description of skb_find_text() according to removed functionality
  2017-02-08  7:13 Igor Pylypiv
@ 2017-02-08  8:41 ` Pablo Neira Ayuso
  0 siblings, 0 replies; 8+ messages in thread
From: Pablo Neira Ayuso @ 2017-02-08  8:41 UTC (permalink / raw)
  To: Igor Pylypiv; +Cc: David Miller, netdev, netfilter-devel, coreteam

On Tue, Feb 07, 2017 at 11:13:12PM -0800, Igor Pylypiv wrote:
> I am not planning to to add a new user of this functions.
> Use of skb_find_text() was a part of my Linux study and its
> description informed me that I can use textsearch_next()
> which I cannot. Just want to fix this.

Send us a patch to update documentation then. Thanks.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH] net: fix description of skb_find_text() according to removed functionality
@ 2017-02-08  7:13 Igor Pylypiv
  2017-02-08  8:41 ` Pablo Neira Ayuso
  0 siblings, 1 reply; 8+ messages in thread
From: Igor Pylypiv @ 2017-02-08  7:13 UTC (permalink / raw)
  To: David Miller; +Cc: Pablo Neira Ayuso, netdev, netfilter-devel, coreteam

I am not planning to to add a new user of this functions.
Use of skb_find_text() was a part of my Linux study and its
description informed me that I can use textsearch_next()
which I cannot. Just want to fix this.

On Tue, Feb 7, 2017 at 7:02 PM, David Miller <davem@davemloft.net> wrote:
>
> How about you make edits to this interface when you add an in-tree
> user as we mentioned in our responses to your previous patch?
>
> Thank you.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2017-02-08  9:09 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-05  5:48 [PATCH] Revert "net: Remove state argument from skb_find_text()" Igor Pylypiv
2017-02-07 12:36 ` Pablo Neira Ayuso
2017-02-07 15:53 ` David Miller
2017-02-08  2:45   ` [PATCH] net: fix description of skb_find_text() according to removed functionality Igor Pylypiv
2017-02-08  3:02     ` David Miller
2017-02-08  8:44     ` Pablo Neira Ayuso
2017-02-08  7:13 Igor Pylypiv
2017-02-08  8:41 ` Pablo Neira Ayuso

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.