From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750993AbcBLGh3 (ORCPT ); Fri, 12 Feb 2016 01:37:29 -0500 Received: from aserp1040.oracle.com ([141.146.126.69]:30053 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750707AbcBLGh1 (ORCPT ); Fri, 12 Feb 2016 01:37:27 -0500 Date: Fri, 12 Feb 2016 09:37:09 +0300 From: Dan Carpenter To: Matt Porter , Alexandre Bounine Cc: Andrew Morton , linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org Subject: [patch] rapidio: mport_cdev: fix some error codes Message-ID: <20160212063709.GA22756@mwanda> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.24 (2015-08-30) X-Source-IP: aserv0022.oracle.com [141.146.126.234] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org copy_to_user() returns the number of bytes not copied but we want to return an error code. Fixes: a45bfc36bf0d ('rapidio: add mport char device driver') Signed-off-by: Dan Carpenter diff --git a/drivers/rapidio/devices/rio_mport_cdev.c b/drivers/rapidio/devices/rio_mport_cdev.c index 6d56725..a3369d1 100644 --- a/drivers/rapidio/devices/rio_mport_cdev.c +++ b/drivers/rapidio/devices/rio_mport_cdev.c @@ -2140,9 +2140,10 @@ static long mport_cdev_ioctl(struct file *filp, return maint_port_idx_get(data, (void __user *)arg); case RIO_MPORT_GET_PROPERTIES: md->properties.hdid = md->mport->host_deviceid; - err = copy_to_user((void __user *)arg, &(data->md->properties), - sizeof(data->md->properties)); - break; + if (copy_to_user((void __user *)arg, &(data->md->properties), + sizeof(data->md->properties))) + return -EFAULT; + return 0; case RIO_ENABLE_DOORBELL_RANGE: return rio_mport_add_db_filter(data, (void __user *)arg); case RIO_DISABLE_DOORBELL_RANGE: @@ -2155,8 +2156,10 @@ static long mport_cdev_ioctl(struct file *filp, data->event_mask = arg; return 0; case RIO_GET_EVENT_MASK: - return copy_to_user((void __user *)arg, &data->event_mask, - sizeof(data->event_mask)); + if (copy_to_user((void __user *)arg, &data->event_mask, + sizeof(data->event_mask))) + return -EFAULT; + return 0; case RIO_MAP_OUTBOUND: return rio_mport_obw_map(filp, (void __user *)arg); case RIO_MAP_INBOUND: