(bug report) b43: impossible conditions in debugfs

Dan Carpenter
2015-11-26T11:59:24Z

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)'

regards,
dan carpenter