On Wed, Mar 02, 2011 at 02:22:21PM +0300, Sergei Shtylyov wrote: > >+ switch (cmd) { > >+ case WDIOC_GETSUPPORT: > >+ ret = copy_to_user((struct watchdog_info __user *)arg, &ident, > >+ sizeof(ident)) ? -EFAULT : 0; > > Doesn't copy_to_user() return 0 or -EFAULT? No and that's a common cause of bugs. copy_{from,to}_user returns the number of characters that could be be copied so the conversion to an error code is needed here. The function takes a void argument and there is no benefit from casting to the full struct watchdog_info __user * pointer type other than maybe clarity to the human reader. While nitpicking - there should be one space between include and < in #include <blah.h>. Ralf