From: Andrey Utkin <andrey.krieger.utkin@gmail.com>
To: linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org,
linux-mips@linux-mips.org
Cc: dborkman@redhat.com, markos.chandras@imgtec.com,
ralf@linux-mips.org,
Andrey Utkin <andrey.krieger.utkin@gmail.com>
Subject: [PATCH 2/3] arch/mips/net/bpf_jit.c: fix failure check
Date: Thu, 17 Jul 2014 16:27:35 +0300 [thread overview]
Message-ID: <1405603655-12571-1-git-send-email-andrey.krieger.utkin@gmail.com> (raw)
static int pkt_type_offset(void) returned -1 in case of failure, and
actual (positive) offset value in case of success. In the only instance
of its usage, the result was saved to local "unsigned int off" variable,
which is used in a lot of places in the same (large) function, so
changing its type could cause many warnings.
There was no signed int variable which could be just used for this case.
There are two possibilities to resolve that: to declare temporary signed
int variable to get the return value from pkt_type_offset(), or to
separate return status from returned offset value. The latter approach
was chosen, however, I am not sure which would be practically optimal.
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=80371
Reported-by: David Binderman <dcb314@hotmail.com>
Signed-off-by: Andrey Utkin <andrey.krieger.utkin@gmail.com>
---
arch/mips/net/bpf_jit.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/arch/mips/net/bpf_jit.c b/arch/mips/net/bpf_jit.c
index b87390a..47f65d5 100644
--- a/arch/mips/net/bpf_jit.c
+++ b/arch/mips/net/bpf_jit.c
@@ -770,7 +770,7 @@ static u64 jit_get_skb_w(struct sk_buff *skb, unsigned offset)
#else
#define PKT_TYPE_MAX 7
#endif
-static int pkt_type_offset(void)
+static int pkt_type_offset(unsigned int *off_arg)
{
struct sk_buff skb_probe = {
.pkt_type = ~0,
@@ -779,8 +779,10 @@ static int pkt_type_offset(void)
unsigned int off;
for (off = 0; off < sizeof(struct sk_buff); off++) {
- if (ct[off] == PKT_TYPE_MAX)
- return off;
+ if (ct[off] == PKT_TYPE_MAX) {
+ *off_arg = off;
+ return 0;
+ }
}
pr_err_once("Please fix pkt_type_offset(), as pkt_type couldn't be found\n");
return -1;
@@ -1332,9 +1334,7 @@ jmp_cmp:
case BPF_ANC | SKF_AD_PKTTYPE:
ctx->flags |= SEEN_SKB;
- off = pkt_type_offset();
-
- if (off < 0)
+ if (pkt_type_offset(&off))
return -1;
emit_load_byte(r_tmp, r_skb, off, ctx);
/* Keep only the last 3 bits */
--
1.8.5.5
next reply other threads:[~2014-07-17 13:27 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-17 13:27 Andrey Utkin [this message]
2014-07-17 13:52 ` Markos Chandras
2014-07-17 13:58 ` Andrey Utkin
2014-07-17 14:12 ` Markos Chandras
2014-07-17 14:22 ` [PATCH] " Andrey Utkin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1405603655-12571-1-git-send-email-andrey.krieger.utkin@gmail.com \
--to=andrey.krieger.utkin@gmail.com \
--cc=dborkman@redhat.com \
--cc=kernel-janitors@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@linux-mips.org \
--cc=markos.chandras@imgtec.com \
--cc=ralf@linux-mips.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®