From owner-svn-src-stable-10@freebsd.org Tue Mar 27 17:42:05 2018 Return-Path: Delivered-To: svn-src-stable-10@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9451CF6F08C; Tue, 27 Mar 2018 17:42:05 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46BAC74DDD; Tue, 27 Mar 2018 17:42:05 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 270311F566; Tue, 27 Mar 2018 17:42:05 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w2RHg57P070032; Tue, 27 Mar 2018 17:42:05 GMT (envelope-from brooks@FreeBSD.org) Received: (from brooks@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w2RHg4XR070030; Tue, 27 Mar 2018 17:42:04 GMT (envelope-from brooks@FreeBSD.org) Message-Id: <201803271742.w2RHg4XR070030@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: brooks set sender to brooks@FreeBSD.org using -f From: Brooks Davis Date: Tue, 27 Mar 2018 17:42:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r331632 - in stable/10/sys: cam/scsi modules/cam X-SVN-Group: stable-10 X-SVN-Commit-Author: brooks X-SVN-Commit-Paths: in stable/10/sys: cam/scsi modules/cam X-SVN-Commit-Revision: 331632 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable-10@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Mar 2018 17:42:05 -0000 Author: brooks Date: Tue Mar 27 17:42:04 2018 New Revision: 331632 URL: https://svnweb.freebsd.org/changeset/base/331632 Log: MFC r330819, r330885, r330934 r330819: Reject CAMIOGET and CAMIOQUEUE ioctl's on pass(4) in 32-bit compat mode. These take a union ccb argument which is full of kernel pointers. Substantial translation efforts would be required to make this work. By rejecting the request we avoid processing or returning entierly wrong data. Reviewed by: imp, ken, markj, cem Obtained from: CheriBSD Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D14654 r330885: We need opt_compat.h after r330819 and 330820. Add opt_compat.h to fix the stand-alone build case. Sponsored by: Netflix. r330934: This should have been += so clean builds work. Noticed by: hps@ Modified: stable/10/sys/cam/scsi/scsi_pass.c stable/10/sys/modules/cam/Makefile Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cam/scsi/scsi_pass.c ============================================================================== --- stable/10/sys/cam/scsi/scsi_pass.c Tue Mar 27 17:39:27 2018 (r331631) +++ stable/10/sys/cam/scsi/scsi_pass.c Tue Mar 27 17:42:04 2018 (r331632) @@ -28,6 +28,8 @@ #include __FBSDID("$FreeBSD$"); +#include "opt_compat.h" + #include #include #include @@ -43,6 +45,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -1838,6 +1841,12 @@ passdoioctl(struct cdev *dev, u_long cmd, caddr_t addr union ccb **user_ccb, *ccb; xpt_opcode fc; +#ifdef COMPAT_FREEBSD32 + if (SV_PROC_FLAG(td->td_proc, SV_ILP32)) { + error = ENOTTY; + goto bailout; + } +#endif if ((softc->flags & PASS_FLAG_ZONE_VALID) == 0) { error = passcreatezone(periph); if (error != 0) @@ -2004,6 +2013,12 @@ passdoioctl(struct cdev *dev, u_long cmd, caddr_t addr struct pass_io_req *io_req; int old_error; +#ifdef COMPAT_FREEBSD32 + if (SV_PROC_FLAG(td->td_proc, SV_ILP32)) { + error = ENOTTY; + goto bailout; + } +#endif user_ccb = (union ccb **)addr; old_error = 0; Modified: stable/10/sys/modules/cam/Makefile ============================================================================== --- stable/10/sys/modules/cam/Makefile Tue Mar 27 17:39:27 2018 (r331631) +++ stable/10/sys/modules/cam/Makefile Tue Mar 27 17:42:04 2018 (r331632) @@ -8,6 +8,7 @@ KMOD= cam # See sys/conf/options for the flags that go into the different opt_*.h files. SRCS= opt_cam.h +SRCS+= opt_compat.h SRCS+= opt_ada.h SRCS+= opt_scsi.h SRCS+= opt_cd.h