netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] isdn: correctly check failed allocation
@ 2015-10-15 16:29 Insu Yun
  2015-10-15 16:29 ` [PATCH 2/2] " Insu Yun
  0 siblings, 1 reply; 4+ messages in thread
From: Insu Yun @ 2015-10-15 16:29 UTC (permalink / raw)
  To: isdn, netdev, linux-kernel; +Cc: taesoo, yeongjin.jang, insu, Insu Yun

Since skb_clone can be failed in memory pressure,
return value of skb_clone needs to be checked.

Signed-off-by: Insu Yun <wuninsu@gmail.com>
---
 drivers/isdn/hisax/isdnl2.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/isdn/hisax/isdnl2.c b/drivers/isdn/hisax/isdnl2.c
index 18accb0..e74f847 100644
--- a/drivers/isdn/hisax/isdnl2.c
+++ b/drivers/isdn/hisax/isdnl2.c
@@ -1284,6 +1284,10 @@ l2_pull_iqueue(struct FsmInst *fi, int event, void *arg)
 	}
 	l2->windowar[p1] = skb_clone(skb, GFP_ATOMIC);
 
+  if (!l2->windowar[p1]) {
+    return;
+  }
+
 	i = sethdraddr(&st->l2, header, CMD);
 
 	if (test_bit(FLG_MOD128, &l2->flag)) {
-- 
1.9.1

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

* [PATCH 2/2] isdn: correctly check failed allocation
  2015-10-15 16:29 [PATCH 1/2] isdn: correctly check failed allocation Insu Yun
@ 2015-10-15 16:29 ` Insu Yun
  2015-10-15 18:42   ` isdn
  2015-10-16  6:32   ` David Miller
  0 siblings, 2 replies; 4+ messages in thread
From: Insu Yun @ 2015-10-15 16:29 UTC (permalink / raw)
  To: isdn, netdev, linux-kernel; +Cc: taesoo, yeongjin.jang, insu, Insu Yun

Since skb_clone is memory allocation, it could be failed when lack of resource.
Therefore, return value of skb_clone needs to be checked and handle error.

Signed-off-by: Insu Yun <wuninsu@gmail.com>
---
 drivers/isdn/mISDN/layer2.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/isdn/mISDN/layer2.c b/drivers/isdn/mISDN/layer2.c
index 949cabb..888c610 100644
--- a/drivers/isdn/mISDN/layer2.c
+++ b/drivers/isdn/mISDN/layer2.c
@@ -1509,6 +1509,12 @@ l2_pull_iqueue(struct FsmInst *fi, int event, void *arg)
 	}
 
 	nskb = skb_clone(skb, GFP_ATOMIC);
+  if (!nskb) {
+			printk(KERN_WARNING "%s: no skb mem in %s\n",
+			       mISDNDevName4ch(&l2->ch), __func__);
+			return;
+  }
+
 	p1 = skb_headroom(nskb);
 	if (p1 >= i)
 		memcpy(skb_push(nskb, i), header, i);
-- 
1.9.1

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

* Re: [PATCH 2/2] isdn: correctly check failed allocation
  2015-10-15 16:29 ` [PATCH 2/2] " Insu Yun
@ 2015-10-15 18:42   ` isdn
  2015-10-16  6:32   ` David Miller
  1 sibling, 0 replies; 4+ messages in thread
From: isdn @ 2015-10-15 18:42 UTC (permalink / raw)
  To: Insu Yun, netdev, linux-kernel; +Cc: taesoo, yeongjin.jang, insu

Hi Insu,

thanks for bringing up this issue again.
I thought I did fix this a year ago, but seems it did not managed to
sent it upstream.

The patch do not fix this completly, since it will drop the original skb
from the L2 I frame queue, so the transmission would lost an I-FRAME,
which is not allowed by the protocol.

The format of the new lines is wrong, you need to use TAB.


Best regards
Karsten

Am 15.10.2015 um 18:29 schrieb Insu Yun:
> Since skb_clone is memory allocation, it could be failed when lack of resource.
> Therefore, return value of skb_clone needs to be checked and handle error.
> 
> Signed-off-by: Insu Yun <wuninsu@gmail.com>
> ---
>  drivers/isdn/mISDN/layer2.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/isdn/mISDN/layer2.c b/drivers/isdn/mISDN/layer2.c
> index 949cabb..888c610 100644
> --- a/drivers/isdn/mISDN/layer2.c
> +++ b/drivers/isdn/mISDN/layer2.c
> @@ -1509,6 +1509,12 @@ l2_pull_iqueue(struct FsmInst *fi, int event, void *arg)
>  	}
>  
>  	nskb = skb_clone(skb, GFP_ATOMIC);
> +  if (!nskb) {
> +			printk(KERN_WARNING "%s: no skb mem in %s\n",
> +			       mISDNDevName4ch(&l2->ch), __func__);
> +			return;
> +  }
> +
>  	p1 = skb_headroom(nskb);
>  	if (p1 >= i)
>  		memcpy(skb_push(nskb, i), header, i);
> 

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

* Re: [PATCH 2/2] isdn: correctly check failed allocation
  2015-10-15 16:29 ` [PATCH 2/2] " Insu Yun
  2015-10-15 18:42   ` isdn
@ 2015-10-16  6:32   ` David Miller
  1 sibling, 0 replies; 4+ messages in thread
From: David Miller @ 2015-10-16  6:32 UTC (permalink / raw)
  To: wuninsu; +Cc: isdn, netdev, linux-kernel, taesoo, yeongjin.jang, insu

From: Insu Yun <wuninsu@gmail.com>
Date: Thu, 15 Oct 2015 12:29:28 -0400

> Since skb_clone is memory allocation, it could be failed when lack of resource.
> Therefore, return value of skb_clone needs to be checked and handle error.
> 
> Signed-off-by: Insu Yun <wuninsu@gmail.com>
> ---
>  drivers/isdn/mISDN/layer2.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/isdn/mISDN/layer2.c b/drivers/isdn/mISDN/layer2.c
> index 949cabb..888c610 100644
> --- a/drivers/isdn/mISDN/layer2.c
> +++ b/drivers/isdn/mISDN/layer2.c
> @@ -1509,6 +1509,12 @@ l2_pull_iqueue(struct FsmInst *fi, int event, void *arg)
>  	}
>  
>  	nskb = skb_clone(skb, GFP_ATOMIC);
> +  if (!nskb) {
> +			printk(KERN_WARNING "%s: no skb mem in %s\n",
> +			       mISDNDevName4ch(&l2->ch), __func__);
> +			return;
> +  }
> +

Again you have indented this code incorrectly.

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

end of thread, other threads:[~2015-10-16  6:32 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-15 16:29 [PATCH 1/2] isdn: correctly check failed allocation Insu Yun
2015-10-15 16:29 ` [PATCH 2/2] " Insu Yun
2015-10-15 18:42   ` isdn
2015-10-16  6:32   ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).