Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp17518695ybl; Thu, 2 Jan 2020 07:01:04 -0800 (PST) X-Google-Smtp-Source: APXvYqxdJxBFOssZvASg+aJhydMLJxWYKwJ0UAnYjJ0zxjSOuIX++zb8iWQEVwDYLNZDJxs5hSsY X-Received: by 2002:a9d:68d3:: with SMTP id i19mr36479451oto.71.1577977264255; Thu, 02 Jan 2020 07:01:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1577977264; cv=none; d=google.com; s=arc-20160816; b=PUHQ+pgSYufN97h29sMu0ob4rp9bCQR/X4cHNUzRcCBKq8DGkCwP4Ap20pg3YvhQEq v8dJLuK4Y8P7LtTT7WkHKiVFWFi8XjQ0c8VdZ5GOtZQMNkWZpWWhbzkF8t6x4mD0gkIK EMBTsAFupmIsxRUbrVrWRwUDDrfB3gv9RbJPl65352oTpbtcVb/1DSPy+aYjtz2R56Dr fWmRBBASKOqJMXlXT8DPtIxWpwue/nO78tTcpIudsPGnaY5OSBW3cYmp5hhCvZ68WIoy A56EEHGJ/U7UP1zAuiOTExTslNnybVe7s62RrQXARsBt3cag4pFUVyHZzddNIzywn6uN kJsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=bHr7vznmK+jYeWprRgaBOffx2NPdRWjg6fbSJRf0a0s=; b=nhj8k5WlBwFrObpHc6kSdEkPvOcUnqlOK/wjSeesNnkjnrkqL25uCL2ysc4vKEB4dw nCSPfFlTr3hg4JBQYmOEcty9QGeef2tRIfs/Ir+Z8MXweaJibQt7qHotbAkRchm+vRJo StKgLQC8g7YBRSOpA3q5IVy5BgGZnG+T8IQwbMOVX6tj5+o1a5VjxZG1LFmyUWQRPjVg O3tqcFN4gZbhn+FmCvxfJ2lJt9mCD+jboCyFz0XcF5y8HeQ52nHWrz11y6+9F7d3Q9YZ w+HVObDMiATFjG/Ni69QA35UZ3pYQnatBxKJM5Lmxj58eMWBYHcVzf+PszptBdP76XPz YDpg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f2si18185184oti.74.2020.01.02.07.00.52; Thu, 02 Jan 2020 07:01:04 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728697AbgABO7q (ORCPT + 99 others); Thu, 2 Jan 2020 09:59:46 -0500 Received: from mout.kundenserver.de ([212.227.126.135]:60677 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728544AbgABO7p (ORCPT ); Thu, 2 Jan 2020 09:59:45 -0500 Received: from threadripper.lan ([149.172.19.189]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.129]) with ESMTPA (Nemesis) id 1N49xZ-1jn8pu1q4X-0105tC; Thu, 02 Jan 2020 15:59:07 +0100 From: Arnd Bergmann To: "James E.J. Bottomley" , "Martin K. Petersen" Cc: Arnd Bergmann , linux-block@vger.kernel.org, Jens Axboe , Hannes Reinecke , Martin Wilck , Jonathan Corbet , Mauro Carvalho Chehab , Guenter Roeck , =?UTF-8?q?Diego=20Elio=20Petten=C3=B2?= , linux-kernel@vger.kernel.org Subject: [PATCH v3 08/22] compat_ioctl: cdrom: handle CDROM_LAST_WRITTEN Date: Thu, 2 Jan 2020 15:55:26 +0100 Message-Id: <20200102145552.1853992-9-arnd@arndb.de> X-Mailer: git-send-email 2.20.0 In-Reply-To: <20200102145552.1853992-1-arnd@arndb.de> References: <20200102145552.1853992-1-arnd@arndb.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Provags-ID: V03:K1:IWmxlyxI1qDwOyVeMVL1WEG4Wr9pkXMYxQX0pGf2w844D03lneV mJ+v/3Zju8V9e+ypSQIdzA7JlLVZDaOpD4oA+aLLJN9iDnF3iB0zWPl9PwpeYIrAMzq1yxa 5emoGaoNRK+PsiIAybanfpyNDZr8DB0jz8KcocrzKhStdA5dDEwNZPLKWSS23HS5ffM/zEx gIpNBKqIzppGYrr3etarA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:1IH1nB+jcXY=:HSkthDNTH1sqo6kPxACiAN 31gKDaW2LonLFIknfehsDRwI8jCQ/x4+dX7A/MFQphAzpdmupNQosnyjmKgRL4oiTp5p2NZjw nWZM5IadK8L5/enUkP9N7fhF/NOxlF2y/tbPuUwa88yG7BrDDbb1T0W6GN/I5p7MFcHl66dKW AfwKqOSgSzIwg0KOSRKtBzMPsfavscLljV4oDfYcBknrpux5V7f22qySw3jSeidJ/I0SmW6h/ 6NpG4ZJLlOchf5vV0zQUkcUsOk+nECfl8ukIbXLTheGkeODX/8s8KwtFQr7P5Yykq+g4GV8iZ HDykSId0YwNcmn7nZTDKBPrqqRA7XMhoI9mwqTULGEGW+E0Y3Du2w6hgwwh23lOGt/iIN5thE MkCvBWqZZWYlWwvKdu3ZklZsEIe4Sst5fF3i6tdtKSZn1IlmX428IpmyIJj5jO3To0bd8WwOP 4k2NchSVuF5hYan2+nlikM+scEclYSg3LojcmKzh07wLR0tH1GESd7di1eseVp1U1FNUy8jwr iWz853oY0iPx4dbBhqYN+U+QS+y5UINZ3eo1JJ3cnT1eUZFJ4ALPBLpQvoYdZ5Od3SmB8tODS SptVWPTIJK6Sz5cartwYIZxoCjtoV35hvPQO7AKDWgMm8FsQ5RkmIZj8xjMqA+jIX3IPepPVq BlYkEIxNKghbtycuROaZazY42KOyi+bm53XovQgC0bgJmRtMBDLDY52cguuGRzFKUMIda/h/h 6ix+khD0ESk4QbdhJtmojUjUKpwkDQ93dLiNvqVbOk5637CxBE6EBLTSqw55Qd8CrJ2++GysO iHAm3iNRqDlNjDOSHir/6LmTkAobhf1E4VP8TJpS5q+6KqHFHo7+rFa9NO2DpUam4YdD0VVbN 96L9Bcrit/jRuaAjbsTQ== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is the only ioctl command that does not have a proper compat handler. Making the normal implementation do the right thing is actually very simply, so just do that by using an in_compat_syscall() check to avoid the special case in the pkcdvd driver. Signed-off-by: Arnd Bergmann --- drivers/block/pktcdvd.c | 24 +----------------------- drivers/cdrom/cdrom.c | 7 ++++--- 2 files changed, 5 insertions(+), 26 deletions(-) diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c index ab4d3be4b646..5f970a7d32c0 100644 --- a/drivers/block/pktcdvd.c +++ b/drivers/block/pktcdvd.c @@ -2663,26 +2663,6 @@ static int pkt_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd, return ret; } -#ifdef CONFIG_COMPAT -static int pkt_compat_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd, unsigned long arg) -{ - switch (cmd) { - /* compatible */ - case CDROMEJECT: - case CDROMMULTISESSION: - case CDROMREADTOCENTRY: - case CDROM_SEND_PACKET: /* compat mode handled in scsi_cmd_ioctl */ - case SCSI_IOCTL_SEND_COMMAND: - return pkt_ioctl(bdev, mode, cmd, (unsigned long)compat_ptr(arg)); - - /* FIXME: no handler so far */ - default: - case CDROM_LAST_WRITTEN: - return -ENOIOCTLCMD; - } -} -#endif - static unsigned int pkt_check_events(struct gendisk *disk, unsigned int clearing) { @@ -2704,9 +2684,7 @@ static const struct block_device_operations pktcdvd_ops = { .open = pkt_open, .release = pkt_close, .ioctl = pkt_ioctl, -#ifdef CONFIG_COMPAT - .compat_ioctl = pkt_compat_ioctl, -#endif + .compat_ioctl = blkdev_compat_ptr_ioctl, .check_events = pkt_check_events, }; diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c index 48095025e588..faca0f346fff 100644 --- a/drivers/cdrom/cdrom.c +++ b/drivers/cdrom/cdrom.c @@ -3293,9 +3293,10 @@ static noinline int mmc_ioctl_cdrom_last_written(struct cdrom_device_info *cdi, ret = cdrom_get_last_written(cdi, &last); if (ret) return ret; - if (copy_to_user((long __user *)arg, &last, sizeof(last))) - return -EFAULT; - return 0; + if (in_compat_syscall()) + return put_user(last, (__s32 __user *)arg); + + return put_user(last, (long __user *)arg); } static int mmc_ioctl(struct cdrom_device_info *cdi, unsigned int cmd, -- 2.20.0