From: "Stephen Biggs" Subject: [KJ] [PATCH][RESUBMIT][6/21] drivers/isdn/i4l/* - compile warning cleanup compile warning cleanup - handle copy_to/from_user error returns, initialize return value to reasonable number in case used before initialized. Signed-off-by: Stephen Biggs Signed-off-by: Domen Puncer --- isdn_common.c | 6 +++++- isdn_ppp.c | 3 ++- isdn_v110.c | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) Index: quilt/drivers/isdn/i4l/isdn_common.c =================================================================== --- quilt.orig/drivers/isdn/i4l/isdn_common.c +++ quilt/drivers/isdn/i4l/isdn_common.c @@ -1843,8 +1843,12 @@ isdn_writebuf_stub(int drvidx, int chan, if (!skb) return 0; skb_reserve(skb, hl); - copy_from_user(skb_put(skb, len), buf, len); + if (copy_from_user(skb_put(skb, len), buf, len)) { + ret = -EFAULT; + goto after_writebuf_skb; + } ret = dev->drv[drvidx]->interface->writebuf_skb(drvidx, chan, 1, skb); +after_writebuf_skb: if (ret <= 0) dev_kfree_skb(skb); if (ret > 0) Index: quilt/drivers/isdn/i4l/isdn_ppp.c =================================================================== --- quilt.orig/drivers/isdn/i4l/isdn_ppp.c +++ quilt/drivers/isdn/i4l/isdn_ppp.c @@ -788,7 +788,8 @@ isdn_ppp_read(int min, struct file *file is->first = b; spin_unlock_irqrestore(&is->buflock, flags); - copy_to_user(buf, save_buf, count); + if (copy_to_user(buf, save_buf, count)) + count = -EFAULT; /* make sure we free the save_buf */ kfree(save_buf); return count; Index: quilt/drivers/isdn/i4l/isdn_v110.c =================================================================== --- quilt.orig/drivers/isdn/i4l/isdn_v110.c +++ quilt/drivers/isdn/i4l/isdn_v110.c @@ -520,7 +520,7 @@ isdn_v110_stat_callback(int idx, isdn_ct { isdn_v110_stream *v = NULL; int i; - int ret; + int ret = 0; if (idx < 0) return 0;