sparse related patches
Subsystems (5)
cover sparse related patches
PATCH 1/5 socket: suppress sparse warnings
Use __force to quiet sparse warnings for cases where the code is simulating user space pointers.
Signed-off-by Stephen Hemminger <[email protected]>
net/socket.c +5 -3
@@ -2648,7 +2648,8 @@ static int bond_ioctl(struct net *net, u old_fs =get_fs ();set_fs (KERNEL_DS ); - err =dev_ioctl (net, cmd, &kifr); + err =dev_ioctl (net, cmd, + (struct ifreq __user __force *) &kifr);set_fs (old_fs);return err;
@@ -2757,7 +2758,7 @@ static int compat_sioc_ifmap(struct net old_fs =get_fs ();set_fs (KERNEL_DS ); - err =dev_ioctl (net, cmd, (void __user *)&ifr); + err =dev_ioctl (net, cmd, (void __user __force *)&ifr);set_fs (old_fs);if (cmd ==SIOCGIFMAP && !err) {
@@ -2862,7 +2863,8 @@ static int routing_ioctl(struct net *net ret |=__get_user (rtdev, &(ur4->rt_dev));if (rtdev) { ret |=copy_from_user (devname,compat_ptr (rtdev),15 ); - r4.rt_dev = devname; devname[15 ] =0 ; + r4.rt_dev = (char __user __force *)devname; + devname[15 ] =0 ; }else r4.rt_dev =NULL ;
PATCH 2/5 atl1[ce]: fix sparse warnings
In reply to Stephen HemmingerThe dmaw_block is an enum and max_pay_load is u32. Therefore sparse gives warning about comparison of unsigned and signed value. Resolve by using min_t to force cast.
Signed-off-by Stephen Hemminger <[email protected]>
drivers/net/atl1c/atl1c_main.c +2 -2
@@ -1102,10 +1102,10 @@ static void atl1c_configure_tx(struct atAT_READ_REG (hw,REG_DEVICE_CTRL , &dev_ctrl_data); max_pay_load = (dev_ctrl_data >>DEVICE_CTRL_MAX_PAYLOAD_SHIFT ) &DEVICE_CTRL_MAX_PAYLOAD_MASK ; - hw->dmaw_block =min (max_pay_load, hw->dmaw_block); + hw->dmaw_block =min_t (u32, max_pay_load, hw->dmaw_block); max_pay_load = (dev_ctrl_data >>DEVICE_CTRL_MAX_RREQ_SZ_SHIFT ) &DEVICE_CTRL_MAX_RREQ_SZ_MASK ; - hw->dmar_block =min (max_pay_load, hw->dmar_block); + hw->dmar_block =min_t (u32, max_pay_load, hw->dmar_block); txq_ctrl_data = (hw->tpd_burst &TXQ_NUM_TPD_BURST_MASK ) <<TXQ_NUM_TPD_BURST_SHIFT ;
drivers/net/atl1e/atl1e_main.c +2 -2
@@ -932,11 +932,11 @@ static inline void atl1e_configure_tx(st max_pay_load = ((dev_ctrl_data >>DEVICE_CTRL_MAX_PAYLOAD_SHIFT )) &DEVICE_CTRL_MAX_PAYLOAD_MASK ; - hw->dmaw_block =min (max_pay_load, hw->dmaw_block); + hw->dmaw_block =min_t (u32, max_pay_load, hw->dmaw_block); max_pay_load = ((dev_ctrl_data >>DEVICE_CTRL_MAX_RREQ_SZ_SHIFT )) &DEVICE_CTRL_MAX_RREQ_SZ_MASK ; - hw->dmar_block =min (max_pay_load, hw->dmar_block); + hw->dmar_block =min_t (u32, max_pay_load, hw->dmar_block);if (hw->nic_type != athr_l2e_revB) AT_WRITE_REGW(hw, REG_TXQ_CTRL + 2,
PATCH 3/5 afkey: add sparse annotation about rcu
In reply to Stephen HemmingerSigned-off-by Stephen Hemminger <[email protected]>
net/key/af_key.c +2 -0
@@ -3655,6 +3655,7 @@ static int pfkey_seq_show(struct seq_fil }static void *pfkey_seq_start (struct seq_file *f,loff_t *ppos) +__acquires (rcu) {struct net *net =seq_file_net (f);struct netns_pfkey *net_pfkey =net_generic (net, pfkey_net_id);
@@ -3672,6 +3673,7 @@ static void *pfkey_seq_next(struct seq_f }static void pfkey_seq_stop (struct seq_file *f,void *v) +__releases (rcu) {rcu_read_unlock (); }
PATCH 4/5 mqprio: cleanups
In reply to Stephen Hemminger* make qdisc_ops local
* add sparse annotation about expected unlock/unlock in dump_class_stats
* fix indentation
Signed-off-by Stephen Hemminger <[email protected]>
net/sched/sch_mqprio.c +4 -2
@@ -311,7 +311,9 @@ static int mqprio_dump_class(struct Qdis }static int mqprio_dump_class_stats (struct Qdisc *sch,unsigned long cl, -struct gnet_dump *d) +struct gnet_dump *d) + __releases(d->lock) + __acquires(d->lock) {struct net_device *dev =qdisc_dev (sch);
@@ -389,7 +391,7 @@ static const struct Qdisc_class_ops mqpr .dump_stats = mqprio_dump_class_stats, }; -struct Qdisc_ops mqprio_qdisc_ops__read_mostly = { +static struct Qdisc_ops mqprio_qdisc_ops__read_mostly = { .cl_ops = &mqprio_class_ops, .id ="mqprio" , .priv_size =sizeof (struct mqprio_sched ),
PATCH 5/5 em_meta: fix sparse warning
In reply to Stephen Hemmingergfp_t needs to be cast to integer.
Signed-off-by Stephen Hemminger <[email protected]>
net/sched/em_meta.c +1 -1
@@ -401,7 +401,7 @@ META_COLLECTOR(int_sk_sndbuf)META_COLLECTOR (int_sk_alloc) {SKIP_NONLOCAL (skb); - dst->value = skb->sk->sk_allocation; + dst->value = (__force int ) skb->sk->sk_allocation; }META_COLLECTOR (int_sk_route_caps)
David Miller
maintainerAll applied, thanks Stephen.