On Tue, Feb 13, 2018 at 04:26:04PM -0800, Randy Dunlap wrote: > In Linux kernel, we get that message 2 times (in x86_64 allmodconfig): > > ../fs/exofs/ore_raid.c:95:64: warning: division by zero > ../fs/exofs/ore_raid.c:116:36: warning: division by zero > > when dividing by variable sizeof_a1pa, where that is: > const unsigned sizeof__a1pa = sizeof(_aab->__a1pa[0]); > > which is in this struct: > struct _alloc_all_bytes { > struct __alloc_stripe_pages_2d { > struct __stripe_pages_2d sp2d; > struct __1_page_stripe _1p_stripes[pages_in_unit]; > } __asp2d; > struct __alloc_1p_arrays { > struct page *pages[group_width]; > struct page *scribble[group_width]; > char page_is_read[data_devs]; > } __a1pa[pages_in_unit]; > } *_aab; > > where 'pages_in_unit' is a function parameter. So, yes, it could have a value > of zero. > > Is the warning message considered correct or useful as is? If so, OK, no problem. It's a division by zero, not because the parameter can be zero but because currently sparse doesn't handle the size of VLAs which are always considered as zero-sized. So, no I don't consider this warning as correct and even less useful. I have a WIP series to handle VLA's sizeof, if there is some interests I can boost a bit its priority. > Although I would rather see something more like: > warning: variable length array on stack That's of course something different that could indeed be quite useful. -- Luc -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html