On 26.10.19 21:40, Joe Perches wrote: > On Sat, 2019-10-26 at 15:54 +0800, zhanglin wrote: >> memset() the structure ethtool_wolinfo that has padded bytes >> but the padded bytes have not been zeroed out. > [] >> diff --git a/net/core/ethtool.c b/net/core/ethtool.c > [] >> @@ -1471,11 +1471,13 @@ static int ethtool_reset(struct net_device *dev, char __user *useraddr) >> >> static int ethtool_get_wol(struct net_device *dev, char __user *useraddr) >> { >> - struct ethtool_wolinfo wol = { .cmd = ETHTOOL_GWOL }; >> + struct ethtool_wolinfo wol; >> >> if (!dev->ethtool_ops->get_wol) >> return -EOPNOTSUPP; >> >> + memset(&wol, 0, sizeof(struct ethtool_wolinfo)); >> + wol.cmd = ETHTOOL_GWOL; >> dev->ethtool_ops->get_wol(dev, &wol); >> >> if (copy_to_user(useraddr, &wol, sizeof(wol))) > > It seems likely there are more of these. > > Is there any way for coccinelle to find them? Just curios: is static struct initialization (on stack) something that should be avoided ? I've been under the impression that static initialization allows thinner code and gives the compiler better chance for optimizations. --mtx --- Enrico Weigelt, metux IT consult Free software and Linux embedded engineering info@xxxxxxxxx -- +49-151-27565287