diff options
Diffstat (limited to 'net/ipv4')
| -rw-r--r-- | net/ipv4/netfilter/arp_tables.c | 6 | ||||
| -rw-r--r-- | net/ipv4/netfilter/ip_tables.c | 6 | 
2 files changed, 8 insertions, 4 deletions
| diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c index 59da7cde0724..f95b6f93814b 100644 --- a/net/ipv4/netfilter/arp_tables.c +++ b/net/ipv4/netfilter/arp_tables.c @@ -1044,8 +1044,10 @@ static int __do_replace(struct net *net, const char *name,  	xt_free_table_info(oldinfo);  	if (copy_to_user(counters_ptr, counters, -			 sizeof(struct xt_counters) * num_counters) != 0) -		ret = -EFAULT; +			 sizeof(struct xt_counters) * num_counters) != 0) { +		/* Silent error, can't fail, new table is already in place */ +		net_warn_ratelimited("arptables: counters copy to user failed while replacing table\n"); +	}  	vfree(counters);  	xt_table_unlock(t);  	return ret; diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c index 718dfbd30cbe..99e810f84671 100644 --- a/net/ipv4/netfilter/ip_tables.c +++ b/net/ipv4/netfilter/ip_tables.c @@ -1231,8 +1231,10 @@ __do_replace(struct net *net, const char *name, unsigned int valid_hooks,  	xt_free_table_info(oldinfo);  	if (copy_to_user(counters_ptr, counters, -			 sizeof(struct xt_counters) * num_counters) != 0) -		ret = -EFAULT; +			 sizeof(struct xt_counters) * num_counters) != 0) { +		/* Silent error, can't fail, new table is already in place */ +		net_warn_ratelimited("iptables: counters copy to user failed while replacing table\n"); +	}  	vfree(counters);  	xt_table_unlock(t);  	return ret; |