[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [bug report] xen-blkback: don't "handle" error by BUG()
On 19.02.2021 09:59, Dan Carpenter wrote: > Hello Jan Beulich, > > The patch 5a264285ed1c: "xen-blkback: don't "handle" error by BUG()" > from Feb 15, 2021, leads to the following static checker warning: > > drivers/block/xen-blkback/blkback.c:836 xen_blkbk_map() > warn: should this be a bitwise negate mask? > > drivers/block/xen-blkback/blkback.c > 823 * Now swizzle the MFN in our domain with the MFN from the > other domain > 824 * so that when we access vaddr(pending_req,i) it has the > contents of > 825 * the page from the other domain. > 826 */ > 827 for (seg_idx = last_map, new_map_idx = 0; seg_idx < > map_until; seg_idx++) { > 828 if (!pages[seg_idx]->persistent_gnt) { > 829 /* This is a newly mapped grant */ > 830 BUG_ON(new_map_idx >= segs_to_map); > 831 if (unlikely(map[new_map_idx].status != 0)) { > 832 pr_debug("invalid buffer -- could not > remap it\n"); > 833 > gnttab_page_cache_put(&ring->free_pages, > 834 > &pages[seg_idx]->page, 1); > 835 pages[seg_idx]->handle = > BLKBACK_INVALID_HANDLE; > 836 ret |= !ret; > > Originally this code was: > > ret |= 1; > > Now it's equivalent to: > > if (!ret) > ret = 1; > > This is the second user of this idiom in the kernel. Both were > introduced in the last month so maybe it's a new trend or something... > Anyway. False positive warning. > > But my main question isn't really related to this patch. What does > the 1 mean in this context? I always feel like there should be > documentation when functions return a mix of error codes, zero and one > but there isn't any here. I agree. The literal 1 was there before, and the security fix was not a good place to change this. I suppose you really should ask whoever introduced that use of literal 1. I find this as odd as you do, and ... > I have reviewed this and so far as I can see setting "ret = 1;" is > always treated exactly the same as an error code by everything. Every > single place where this is checked just checks for ret is zero. The > value is propagated two functions back and then it becomes -EIO. ... I've come to the same conclusions. Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |