From: SF Markus Elfring <hidden> Date: 2016-08-20 07:29:32
From: Markus Elfring <redacted>
Date: Sat, 20 Aug 2016 09:16:16 +0200
A few update suggestions were taken into account
from static source code analysis.
Markus Elfring (2):
Use memdup_user()
Rename a jump label
drivers/net/tun.c | 16 +++++-----------
1 file changed, 5 insertions(+), 11 deletions(-)
--
2.9.3
From: SF Markus Elfring <hidden> Date: 2016-08-20 07:35:24
From: Markus Elfring <redacted>
Date: Sat, 20 Aug 2016 08:54:15 +0200
Reuse existing functionality from memdup_user() instead of keeping
duplicate source code.
This issue was detected by using the Coccinelle software.
Signed-off-by: Markus Elfring <redacted>
---
drivers/net/tun.c | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)
@@ -731,14 +731,9 @@ static int update_filter(struct tap_filter *filter, void __user *arg)}alen=ETH_ALEN*uf.count;-addr=kmalloc(alen,GFP_KERNEL);-if(!addr)-return-ENOMEM;--if(copy_from_user(addr,arg+sizeof(uf),alen)){-err=-EFAULT;-gotodone;-}+addr=memdup_user(arg+sizeof(uf),alen);+if(IS_ERR(addr))+returnPTR_ERR(addr);/* The filter is updated without holding any locks. Which is*perfectlysafe.Wedisableitfirstandintheworst
From: SF Markus Elfring <hidden> Date: 2016-08-20 07:37:43
From: Markus Elfring <redacted>
Date: Sat, 20 Aug 2016 09:00:34 +0200
Adjust a jump target according to the Linux coding style convention.
Signed-off-by: Markus Elfring <redacted>
---
drivers/net/tun.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
@@ -753,7 +753,7 @@ static int update_filter(struct tap_filter *filter, void __user *arg)for(;n<uf.count;n++){if(!is_multicast_ether_addr(addr[n].u)){err=0;/* no filter */-gotodone;+gotofree_addr;}addr_hash_set(filter->mask,addr[n].u);}
@@ -769,8 +769,7 @@ static int update_filter(struct tap_filter *filter, void __user *arg)/* Return the number of exact filters */err=nexact;--done:+free_addr:kfree(addr);returnerr;}
Hi,
On Sat, 20 Aug 2016 09:34:56 +0200 SF Markus Elfring [off-list ref] wrote:
From: Markus Elfring <redacted>
Date: Sat, 20 Aug 2016 08:54:15 +0200
Reuse existing functionality from memdup_user() instead of keeping
duplicate source code.
This issue was detected by using the Coccinelle software.
Signed-off-by: Markus Elfring <redacted>
From: "Michael S. Tsirkin" <mst@redhat.com> Date: 2016-08-22 01:41:19
On Sat, Aug 20, 2016 at 09:37:16AM +0200, SF Markus Elfring wrote:
From: Markus Elfring <redacted>
Date: Sat, 20 Aug 2016 09:00:34 +0200
Adjust a jump target according to the Linux coding style convention.
Signed-off-by: Markus Elfring <redacted>
I don't have an opinion of this one. Which convention do you refer to?
@@ -753,7 +753,7 @@ static int update_filter(struct tap_filter *filter, void __user *arg)for(;n<uf.count;n++){if(!is_multicast_ether_addr(addr[n].u)){err=0;/* no filter */-gotodone;+gotofree_addr;}addr_hash_set(filter->mask,addr[n].u);}
@@ -769,8 +769,7 @@ static int update_filter(struct tap_filter *filter, void __user *arg)/* Return the number of exact filters */err=nexact;--done:+free_addr:kfree(addr);returnerr;}
From: "Michael S. Tsirkin" <mst@redhat.com> Date: 2016-08-22 01:44:02
On Sat, Aug 20, 2016 at 09:34:56AM +0200, SF Markus Elfring wrote:
From: Markus Elfring <redacted>
Date: Sat, 20 Aug 2016 08:54:15 +0200
Reuse existing functionality from memdup_user() instead of keeping
duplicate source code.
This issue was detected by using the Coccinelle software.
Signed-off-by: Markus Elfring <redacted>
@@ -731,14 +731,9 @@ static int update_filter(struct tap_filter *filter, void __user *arg)}alen=ETH_ALEN*uf.count;-addr=kmalloc(alen,GFP_KERNEL);-if(!addr)-return-ENOMEM;--if(copy_from_user(addr,arg+sizeof(uf),alen)){-err=-EFAULT;-gotodone;-}+addr=memdup_user(arg+sizeof(uf),alen);+if(IS_ERR(addr))+returnPTR_ERR(addr);/* The filter is updated without holding any locks. Which is*perfectlysafe.Wedisableitfirstandintheworst
From: Mike Rapoport <hidden> Date: 2016-08-22 05:26:55
On Mon, Aug 22, 2016 at 04:41:11AM +0300, Michael S. Tsirkin wrote:
On Sat, Aug 20, 2016 at 09:37:16AM +0200, SF Markus Elfring wrote:
quoted
From: Markus Elfring <redacted>
Date: Sat, 20 Aug 2016 09:00:34 +0200
Adjust a jump target according to the Linux coding style convention.
Signed-off-by: Markus Elfring <redacted>
I don't have an opinion of this one. Which convention do you refer to?
Citing Documentation/CodingStyle:
Choose label names which say what the goto does or why the goto exists. An
example of a good name could be "out_buffer:" if the goto frees "buffer".
Avoid using GW-BASIC names like "err1:" and "err2:". Also don't name them after
the goto location like "err_kmalloc_failed:"
@@ -753,7 +753,7 @@ static int update_filter(struct tap_filter *filter, void __user *arg)for(;n<uf.count;n++){if(!is_multicast_ether_addr(addr[n].u)){err=0;/* no filter */-gotodone;+gotofree_addr;}addr_hash_set(filter->mask,addr[n].u);}
@@ -769,8 +769,7 @@ static int update_filter(struct tap_filter *filter, void __user *arg)/* Return the number of exact filters */err=nexact;--done:+free_addr:kfree(addr);returnerr;}