From: Andrew Lunn <andrew@lunn.ch>
To: "Gustavo A. R. Silva" <garsilva@embeddedor.com>
Cc: Vivien Didelot <vivien.didelot@savoirfairelinux.com>,
Florian Fainelli <f.fainelli@gmail.com>,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [net-dsa-mv88e6xxx] question about potential use of uninitialized variable
Date: Fri, 12 May 2017 04:33:33 +0200 [thread overview]
Message-ID: <20170512023333.GA18767@lunn.ch> (raw)
In-Reply-To: <20170511163537.Horde.CH1Q_6Lo2SOIbQB6MQJFV3g@gator4166.hostgator.com>
On Thu, May 11, 2017 at 04:35:37PM -0500, Gustavo A. R. Silva wrote:
>
> Hello everybody,
>
> While looking into Coverity ID 1398130 I ran into the following
> piece of code at drivers/net/dsa/mv88e6xxx/chip.c:849:
>
> 849static uint64_t _mv88e6xxx_get_ethtool_stat(struct mv88e6xxx_chip *chip,
> 850 struct mv88e6xxx_hw_stat *s,
> 851 int port, u16 bank1_select,
> 852 u16 histogram)
> 853{
> 854 u32 low;
> 855 u32 high = 0;
> 856 u16 reg = 0;
> 857 int err;
> 858 u64 value;
> 859
> 860 switch (s->type) {
> 861 case STATS_TYPE_PORT:
> 862 err = mv88e6xxx_port_read(chip, port, s->reg, ®);
> 863 if (err)
> 864 return UINT64_MAX;
> 865
> 866 low = reg;
> 867 if (s->sizeof_stat == 4) {
> 868 err = mv88e6xxx_port_read(chip, port,
> s->reg + 1, ®);
> 869 if (err)
> 870 return UINT64_MAX;
> 871 high = reg;
> 872 }
> 873 break;
> 874 case STATS_TYPE_BANK1:
> 875 reg = bank1_select;
> 876 /* fall through */
> 877 case STATS_TYPE_BANK0:
> 878 reg |= s->reg | histogram;
> 879 mv88e6xxx_g1_stats_read(chip, reg, &low);
> 880 if (s->sizeof_stat == 8)
> 881 mv88e6xxx_g1_stats_read(chip, reg + 1, &high);
> 882 }
> 883 value = (((u64)high) << 16) | low;
> 884 return value;
> 885}
>
> My question here is if there is any chance for the execution path to
> directly jump from line 860 to line 883, hence ending up using the
> uninitialized variable _low_?
Hi Gustavo
It would require that s->type not have one of the listed case values.
Currently all members of mv88e6xxx_hw_stats due use expected values.
However, it would not hurt to add a
default:
return UINT64_MAX;
Do you want to submit a patch?
Thanks
Andrew
next prev parent reply other threads:[~2017-05-12 2:33 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-11 21:35 [net-dsa-mv88e6xxx] question about potential use of uninitialized variable Gustavo A. R. Silva
2017-05-12 2:33 ` Andrew Lunn [this message]
2017-05-12 2:48 ` Gustavo A. R. Silva
2017-05-12 3:11 ` [PATCH] net: dsa: mv88e6xxx: add default case to switch Gustavo A. R. Silva
2017-05-12 16:15 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170512023333.GA18767@lunn.ch \
--to=andrew@lunn.ch \
--cc=f.fainelli@gmail.com \
--cc=garsilva@embeddedor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=vivien.didelot@savoirfairelinux.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.