Use put_user instead of copy_to_user where possible. This speeds up the I2C_FUNCS ioctl by 5 to 8% in my tests. Signed-off-by: Jean Delvare Laughed-at-by: Mark M. Hoffman --- drivers/i2c/i2c-dev.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) --- linux-2.6.19-git.orig/drivers/i2c/i2c-dev.c 2006-12-03 15:52:22.000000000 +0100 +++ linux-2.6.19-git/drivers/i2c/i2c-dev.c 2006-12-03 17:00:42.000000000 +0100 @@ -193,8 +193,7 @@ return 0; case I2C_FUNCS: funcs = i2c_get_functionality(client->adapter); - return (copy_to_user((unsigned long __user *)arg, &funcs, - sizeof(unsigned long)))?-EFAULT:0; + return put_user(funcs, (unsigned long __user *)arg); case I2C_RDWR: if (copy_from_user(&rdwr_arg,