(bug report) b43: impossible conditions in debugfs

Michael Büsch m at bues.ch
Thu Nov 26 04:32:41 PST 2015


On Thu, 26 Nov 2015 14:59:24 +0300
Dan Carpenter <dan.carpenter at oracle.com> wrote:

> Hello Michael Buesch,
> 
> The patch 6bbc321a96d4: "b43: Add debugfs files for random SHM
> access" from Jun 19, 2008, leads to the following static checker
> warning:
> 
> 	drivers/net/wireless/broadcom/b43/debugfs.c:217 shm32write__write_file()
> 	warn: impossible condition '(mask > 4294967295) => (0-u32max > u32max)'
> 
> drivers/net/wireless/broadcom/b43/debugfs.c
>    198  static int shm32write__write_file(struct b43_wldev *dev,
>    199                                    const char *buf, size_t count)
>    200  {
>    201          unsigned int routing, addr, mask, set;
>    202          u32 val;
>    203          int res;
>    204  
>    205          res = sscanf(buf, "0x%X 0x%X 0x%X 0x%X",
>    206                       &routing, &addr, &mask, &set);
>    207          if (res != 4)
>    208                  return -EINVAL;
>    209          if (routing > B43_MAX_SHM_ROUTING)
>    210                  return -EADDRNOTAVAIL;
>    211          if (addr > B43_MAX_SHM_ADDR)
>    212                  return -EADDRNOTAVAIL;
>    213          if (routing == B43_SHM_SHARED) {
>    214                  if ((addr % 2) != 0)
>    215                          return -EADDRNOTAVAIL;
>    216          }
>    217          if ((mask > 0xFFFFFFFF) || (set > 0xFFFFFFFF))
> 
> Both of these conditions are impossible.
> 
>    218                  return -E2BIG;
>    219  
>    220          if (mask == 0)
>    221                  val = 0;
>    222          else
>    223                  val = b43_shm_read32(dev, routing, addr);
>    224          val &= mask;
>    225          val |= set;
>    226          b43_shm_write32(dev, routing, addr, val);
>    227  
>    228          return 0;
>    229  }
> 
> See also:
> drivers/net/wireless/broadcom/b43/debugfs.c:346 mmio32write__write_file() warn: impossible condition '(mask > 4294967295) => (0-u32max > u32max)'
> drivers/net/wireless/broadcom/b43/debugfs.c:346 mmio32write__write_file() warn: impossible condition '(set > 4294967295) => (0-u32max > u32max)'



Sure. These are intentional.
The compiler will optimize this out.

-- 
Michael
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/b43-dev/attachments/20151126/99514e38/attachment.sig>


More information about the b43-dev mailing list