* [PATCH 1/1] scsi: fcoe: return value of skb_linearize should be handled
@ 2016-12-07 8:00 Zhouyi Zhou
[not found] ` <1481097600-25604-1-git-send-email-zhouzhouyi-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
0 siblings, 1 reply; 3+ messages in thread
From: Zhouyi Zhou @ 2016-12-07 8:00 UTC (permalink / raw)
To: jejb, martin.petersen, jth, fcoe-devel, linux-scsi, linux-kernel
Cc: Zhouyi Zhou, Zhouyi Zhou
Return value of skb_linearize should be handled.
Signed-off-by: Zhouyi Zhou <yizhouzhou@ict.ac.cn>
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com>
---
drivers/scsi/bnx2fc/bnx2fc_fcoe.c | 6 ++++--
drivers/scsi/fcoe/fcoe.c | 5 ++++-
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/bnx2fc/bnx2fc_fcoe.c b/drivers/scsi/bnx2fc/bnx2fc_fcoe.c
index f9ddb61..142f7e2 100644
--- a/drivers/scsi/bnx2fc/bnx2fc_fcoe.c
+++ b/drivers/scsi/bnx2fc/bnx2fc_fcoe.c
@@ -542,8 +542,10 @@ static void bnx2fc_recv_frame(struct sk_buff *skb)
return;
}
- if (skb_is_nonlinear(skb))
- skb_linearize(skb);
+ if (skb_linearize(skb)) {
+ kfree_skb(skb);
+ return;
+ }
mac = eth_hdr(skb)->h_source;
dest_mac = eth_hdr(skb)->h_dest;
diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c
index 9bd41a3..4e3499c 100644
--- a/drivers/scsi/fcoe/fcoe.c
+++ b/drivers/scsi/fcoe/fcoe.c
@@ -1685,7 +1685,10 @@ static void fcoe_recv_frame(struct sk_buff *skb)
skb->dev ? skb->dev->name : "<NULL>");
port = lport_priv(lport);
- skb_linearize(skb); /* check for skb_is_nonlinear is within skb_linearize */
+ if (skb_linearize(skb)) {
+ kfree_skb(skb);
+ return;
+ }
/*
* Frame length checks and setting up the header pointers
--
1.9.1
^ permalink raw reply related [flat|nested] 3+ messages in thread[parent not found: <1481097600-25604-1-git-send-email-zhouzhouyi-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>]
* Re: [PATCH 1/1] scsi: fcoe: return value of skb_linearize should be handled [not found] ` <1481097600-25604-1-git-send-email-zhouzhouyi-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> @ 2016-12-07 8:28 ` Johannes Thumshirn 2016-12-07 8:33 ` Zhouyi Zhou 0 siblings, 1 reply; 3+ messages in thread From: Johannes Thumshirn @ 2016-12-07 8:28 UTC (permalink / raw) To: Zhouyi Zhou Cc: jejb-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8, martin.petersen-QHcLZuEGTsvQT0dZR+AlfA, linux-scsi-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, Zhouyi Zhou, fcoe-devel-s9riP+hp16TNLxjTenLetw, jth-DgEjT+Ai2ygdnm+yROfE0A Hi Zhouyi, On Wed, Dec 07, 2016 at 04:00:00PM +0800, Zhouyi Zhou wrote: > Return value of skb_linearize should be handled. > > Signed-off-by: Zhouyi Zhou <yizhouzhou-6xnC4QlcT6v/PtFMR13I2A@public.gmane.org> > Reviewed-by: Yuval Shaia <yuval.shaia-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org> > --- > drivers/scsi/bnx2fc/bnx2fc_fcoe.c | 6 ++++-- > drivers/scsi/fcoe/fcoe.c | 5 ++++- > 2 files changed, 8 insertions(+), 3 deletions(-) > > diff --git a/drivers/scsi/bnx2fc/bnx2fc_fcoe.c b/drivers/scsi/bnx2fc/bnx2fc_fcoe.c > index f9ddb61..142f7e2 100644 > --- a/drivers/scsi/bnx2fc/bnx2fc_fcoe.c > +++ b/drivers/scsi/bnx2fc/bnx2fc_fcoe.c > @@ -542,8 +542,10 @@ static void bnx2fc_recv_frame(struct sk_buff *skb) > return; > } > > - if (skb_is_nonlinear(skb)) > - skb_linearize(skb); > + if (skb_linearize(skb)) { > + kfree_skb(skb); > + return; > + } > mac = eth_hdr(skb)->h_source; > dest_mac = eth_hdr(skb)->h_dest; > > diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c > index 9bd41a3..4e3499c 100644 > --- a/drivers/scsi/fcoe/fcoe.c > +++ b/drivers/scsi/fcoe/fcoe.c > @@ -1685,7 +1685,10 @@ static void fcoe_recv_frame(struct sk_buff *skb) > skb->dev ? skb->dev->name : "<NULL>"); > > port = lport_priv(lport); > - skb_linearize(skb); /* check for skb_is_nonlinear is within skb_linearize */ > + if (skb_linearize(skb)) { > + kfree_skb(skb); > + return; > + } > > /* > * Frame length checks and setting up the header pointers > -- > 1.9.1 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-scsi" in > the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org > More majordomo info at http://vger.kernel.org/majordomo-info.html I'd personally prefer something like: diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c index 9bd41a3..bc6fa6c 100644 --- a/drivers/scsi/fcoe/fcoe.c +++ b/drivers/scsi/fcoe/fcoe.c @@ -1673,8 +1673,7 @@ static void fcoe_recv_frame(struct sk_buff *skb) lport = fr->fr_dev; if (unlikely(!lport)) { FCOE_NETDEV_DBG(skb->dev, "NULL lport in skb\n"); - kfree_skb(skb); - return; + goto free_skb; } FCOE_NETDEV_DBG(skb->dev, @@ -1685,8 +1684,8 @@ static void fcoe_recv_frame(struct sk_buff *skb) skb->dev ? skb->dev->name : "<NULL>"); port = lport_priv(lport); - skb_linearize(skb); /* check for skb_is_nonlinear is within skb_linearize */ - + if (skb_linearize(skb)) + goto free_skb; /* * Frame length checks and setting up the header pointers * was done in fcoe_rcv already. @@ -1732,6 +1731,7 @@ static void fcoe_recv_frame(struct sk_buff *skb) drop: stats->ErrorFrames++; put_cpu(); +free_skb: kfree_skb(skb); } For bnx2fc as well if Chad agrees. Thanks, Johannes -- Johannes Thumshirn Storage jthumshirn-l3A5Bk7waGM@public.gmane.org +49 911 74053 689 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Felix Imendörffer, Jane Smithard, Graham Norton HRB 21284 (AG Nürnberg) Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 1/1] scsi: fcoe: return value of skb_linearize should be handled 2016-12-07 8:28 ` Johannes Thumshirn @ 2016-12-07 8:33 ` Zhouyi Zhou 0 siblings, 0 replies; 3+ messages in thread From: Zhouyi Zhou @ 2016-12-07 8:33 UTC (permalink / raw) To: Johannes Thumshirn Cc: jejb, Martin K. Petersen, Johannes Thumshirn, fcoe-devel, linux-scsi, linux-kernel@vger.kernel.org, Zhouyi Zhou, Chad Dupuis Thanks Johannes for reviewing, your code is indeeded more elegant On Wed, Dec 7, 2016 at 4:28 PM, Johannes Thumshirn <jthumshirn@suse.de> wrote: > Hi Zhouyi, > On Wed, Dec 07, 2016 at 04:00:00PM +0800, Zhouyi Zhou wrote: >> Return value of skb_linearize should be handled. >> >> Signed-off-by: Zhouyi Zhou <yizhouzhou@ict.ac.cn> >> Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com> >> --- >> drivers/scsi/bnx2fc/bnx2fc_fcoe.c | 6 ++++-- >> drivers/scsi/fcoe/fcoe.c | 5 ++++- >> 2 files changed, 8 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/scsi/bnx2fc/bnx2fc_fcoe.c b/drivers/scsi/bnx2fc/bnx2fc_fcoe.c >> index f9ddb61..142f7e2 100644 >> --- a/drivers/scsi/bnx2fc/bnx2fc_fcoe.c >> +++ b/drivers/scsi/bnx2fc/bnx2fc_fcoe.c >> @@ -542,8 +542,10 @@ static void bnx2fc_recv_frame(struct sk_buff *skb) >> return; >> } >> >> - if (skb_is_nonlinear(skb)) >> - skb_linearize(skb); >> + if (skb_linearize(skb)) { >> + kfree_skb(skb); >> + return; >> + } >> mac = eth_hdr(skb)->h_source; >> dest_mac = eth_hdr(skb)->h_dest; >> >> diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c >> index 9bd41a3..4e3499c 100644 >> --- a/drivers/scsi/fcoe/fcoe.c >> +++ b/drivers/scsi/fcoe/fcoe.c >> @@ -1685,7 +1685,10 @@ static void fcoe_recv_frame(struct sk_buff *skb) >> skb->dev ? skb->dev->name : "<NULL>"); >> >> port = lport_priv(lport); >> - skb_linearize(skb); /* check for skb_is_nonlinear is within skb_linearize */ >> + if (skb_linearize(skb)) { >> + kfree_skb(skb); >> + return; >> + } >> >> /* >> * Frame length checks and setting up the header pointers >> -- >> 1.9.1 >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html > > I'd personally prefer something like: > > diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c > index 9bd41a3..bc6fa6c 100644 > --- a/drivers/scsi/fcoe/fcoe.c > +++ b/drivers/scsi/fcoe/fcoe.c > @@ -1673,8 +1673,7 @@ static void fcoe_recv_frame(struct sk_buff *skb) > lport = fr->fr_dev; > if (unlikely(!lport)) { > FCOE_NETDEV_DBG(skb->dev, "NULL lport in skb\n"); > - kfree_skb(skb); > - return; > + goto free_skb; > } > > FCOE_NETDEV_DBG(skb->dev, > @@ -1685,8 +1684,8 @@ static void fcoe_recv_frame(struct sk_buff *skb) > skb->dev ? skb->dev->name : "<NULL>"); > > port = lport_priv(lport); > - skb_linearize(skb); /* check for skb_is_nonlinear is within skb_linearize */ > - > + if (skb_linearize(skb)) > + goto free_skb; > /* > * Frame length checks and setting up the header pointers > * was done in fcoe_rcv already. > @@ -1732,6 +1731,7 @@ static void fcoe_recv_frame(struct sk_buff *skb) > drop: > stats->ErrorFrames++; > put_cpu(); > +free_skb: > kfree_skb(skb); > } > > > For bnx2fc as well if Chad agrees. > > Thanks, > Johannes > > -- > Johannes Thumshirn Storage > jthumshirn@suse.de +49 911 74053 689 > SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg > GF: Felix Imendörffer, Jane Smithard, Graham Norton > HRB 21284 (AG Nürnberg) > Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850 Thanks Zhouyi ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-12-07 8:33 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-12-07 8:00 [PATCH 1/1] scsi: fcoe: return value of skb_linearize should be handled Zhouyi Zhou
[not found] ` <1481097600-25604-1-git-send-email-zhouzhouyi-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-12-07 8:28 ` Johannes Thumshirn
2016-12-07 8:33 ` Zhouyi Zhou
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox