On Fri, Sep 18, 2015 at 11:06:44PM +0800, Fengguang Wu wrote: > [CC sparse people] > > On Fri, Sep 18, 2015 at 04:41:56PM +0200, Paolo Bonzini wrote: > > > > > > On 18/09/2015 16:40, Roman Kagan wrote: > > > typedef unsigned long __nocast cputime_t; > > > > > > extern void task_cputime_adjusted(cputime_t *); > > > extern void current_task_runtime_100ns(void); > > > > > > void current_task_runtime_100ns(void) > > > { > > > cputime_t utime; > > > > > > task_cputime_adjusted(&utime); > > > } > > > %%% gcc -c x.c -Wall -Werror -O2; echo $? > > > 0 > > > %%% sparse x.c > > > x.c:16:32: warning: incorrect type in argument 1 (different modifiers) > > > x.c:16:32: expected unsigned long [nocast] [usertype] *<noident> > > > x.c:16:32: got unsigned long *<noident> > > > x.c:16:32: warning: implicit cast to nocast type > > > > > > Looks like a sparse bug to me. > > > > Indeed... > > > > Paolo The problem is that the intent and semantic of 'nocast' is not clear at all. There is an explanation about 'nocast' vs. 'bitwise' here: https://git.kernel.org/cgit/devel/sparse/sparse.git/tree/Documentation/sparse.txt but it doesn't give much info about the exact wanted behaviour. Since for the kernel 'nocast' is only used for cputime_t & cputime64_t, I think it should be clarified and fixed if needed. A patch proposal is following. Regards, Luc -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html