Received: by 2002:a25:824b:0:0:0:0:0 with SMTP id d11csp8229479ybn; Tue, 1 Oct 2019 05:18:23 -0700 (PDT) X-Google-Smtp-Source: APXvYqyL5vDB+kZ2ztviX2at2hRcqNjRtuby6n3bz/uz+Vae2YpsHNnGXRvDousbdXcMTk8JkKBI X-Received: by 2002:a17:906:b742:: with SMTP id fx2mr23325113ejb.205.1569932302853; Tue, 01 Oct 2019 05:18:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1569932302; cv=none; d=google.com; s=arc-20160816; b=lcggM7Ed8v4Eo0GzU7dYH1nUrXdQInlXRjsRKdiYpLhNdxEi+7izXafgQ3oc52ka2Q l3D3nU1bJh6Pzjl69TsJ8PrqWo7ggXkE+iTa9oUs/wb1dBcy5iBDG/EGkOGSxVtUNebi RgTaUtReVkrWdvnkkO/z9cKlU7kWXcnuoZ+5YSlJLqqbdnsgPtj97bDyD2v1zBLN45Qb FLBj+F2WjbRt/MpwF8TkiKyvGG2wlT5vz7W4eUfPGJA29ugMxPQb8e1A6tk5ixv+hYCV X+JeCArsjf7ZvJ3l/VnaaHvMmCE10wHyepYNBCNrg9qySNE/19+P/G8cTsTjvyC8j1CV b8DQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=n+5Yy7YllNK/YrtqYQNhKYuL7vL1WzBjDBWr7u4jj4U=; b=NqnK/qY7L95DUoF0QAIfUPmaO8YSMBVYqX+OZdzGbFEmWO/eaFuamPG8uhUj2I67XO E/l4I++10Fjnu/rQjofJ3Qjh5Y4rDNONsgJCk9wIGQPQmgQ63LsrwjUKDd2F0Huih7Pe QO4CTV3NR2lZrD8Zwa+59uya08puXDOFRxuSc1exrfWX6BT58Imcr9OEh8IkhIqtaEZw Bv2BM5fFb81r7ko1fGsCH0PwozfF6t/YmPCyW7WvjeyMVM5XJnKC4ELQARZ3xBuTjPlE x6VXorq5NWpKrveQmuyXEOecAU5PId9DREBuBghx9nnGovYQAoI6fOcsdpb9+M4Yc5SD q48w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ziepe.ca header.s=google header.b=Gmq5RHPX; 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 ga6si8689145ejb.309.2019.10.01.05.17.57; Tue, 01 Oct 2019 05:18:22 -0700 (PDT) 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; dkim=pass header.i=@ziepe.ca header.s=google header.b=Gmq5RHPX; 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 S2387693AbfJAMQ0 (ORCPT + 99 others); Tue, 1 Oct 2019 08:16:26 -0400 Received: from mail-qt1-f193.google.com ([209.85.160.193]:40756 "EHLO mail-qt1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725821AbfJAMQZ (ORCPT ); Tue, 1 Oct 2019 08:16:25 -0400 Received: by mail-qt1-f193.google.com with SMTP id f7so21255428qtq.7 for ; Tue, 01 Oct 2019 05:16:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ziepe.ca; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=n+5Yy7YllNK/YrtqYQNhKYuL7vL1WzBjDBWr7u4jj4U=; b=Gmq5RHPXrDRIZQHN+johdaJhA4hUwTMqKgRtBS40lcknjY8J6j9lTXw8HUT64diSN3 PBhoUu+nRLw51D+RidIPCAgqJPmMnKOkrMRG0neqTEg/wKeRgjvwGoPiNthc7oInjFzi VlibkmcktqXWheqi5nSG1z3pQKgrRVpToQ5BYPTBS1O5DGhLVzFQXh8oKQNbID7DxsbK QvBlYvVMBZjCDjQtCBPzTKQC91xBZUDL+3xQyS/XiSvMPJBlP78nA+utLkznZVodFI+F 5nCdL9+HZpFkVnJ1ErPy8q9SmAeLF8QawG/XNnJ3vJhPk73z1h8LJRT0e1FsXue/tGL4 HaiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=n+5Yy7YllNK/YrtqYQNhKYuL7vL1WzBjDBWr7u4jj4U=; b=uaG3ZXKHgMQka5m7y+Ju24qjb5sg0PyEDyrA+Vh+q78Do37bTsZjyZxQsmXxkRvkgh 9dwb9fXPBgTnK9nYz6UM4IN1/9oud22PETGo/m0nZ6Rvtt+eCBNMu9EsaHg8qsCFOpnZ MBgPbsBf1v2CcvxTJQ6/b/iuv3yIjDpZTryeKeSkPFpb4H2Qv2u/qdyDERWojNEtd5O/ PWep4QBAlQSNt4PvLy/Ob3gqLJ37Ck/n8lIAD9phsk6/9zBVoQTyvHZ1shxwEkwQo0uJ YI3LjE0zdEdPGCUve7Cn/45u/6gYgLVyOPObNKVUAdBF+IW7vha1TXWLfCVu1UDP74hQ pmjw== X-Gm-Message-State: APjAAAWEf9DXu6/JaaSC7h6StxFoDA0NNGGYaMCtfbQW2G+ycpvlGgSq 2nrgh74Ydr1dM4EfWVUOlg6xcA== X-Received: by 2002:ad4:404b:: with SMTP id r11mr24659987qvp.58.1569932184549; Tue, 01 Oct 2019 05:16:24 -0700 (PDT) Received: from ziepe.ca (hlfxns017vw-142-162-113-180.dhcp-dynamic.fibreop.ns.bellaliant.net. [142.162.113.180]) by smtp.gmail.com with ESMTPSA id a36sm9056580qtk.21.2019.10.01.05.16.23 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 01 Oct 2019 05:16:23 -0700 (PDT) Received: from jgg by mlx.ziepe.ca with local (Exim 4.90_1) (envelope-from ) id 1iFH4p-0006Rt-Cc; Tue, 01 Oct 2019 09:16:23 -0300 Date: Tue, 1 Oct 2019 09:16:23 -0300 From: Jason Gunthorpe To: Alan Mikhak Cc: linux-kernel@vger.kernel.org, martin.petersen@oracle.com, alexios.zavras@intel.com, ming.lei@redhat.com, gregkh@linuxfoundation.org, tglx@linutronix.de, christophe.leroy@c-s.fr, palmer@sifive.com, paul.walmsley@sifive.com Subject: Re: [PATCH] scatterlist: Validate page before calling PageSlab() Message-ID: <20191001121623.GA22532@ziepe.ca> References: <1569885755-10947-1-git-send-email-alan.mikhak@sifive.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1569885755-10947-1-git-send-email-alan.mikhak@sifive.com> User-Agent: Mutt/1.9.4 (2018-02-28) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Sep 30, 2019 at 04:22:35PM -0700, Alan Mikhak wrote: > From: Alan Mikhak > > Modify sg_miter_stop() to validate the page pointer > before calling PageSlab(). This check prevents a crash > that will occur if PageSlab() gets called with a page > pointer that is not backed by page struct. > > A virtual address obtained from ioremap() for a physical > address in PCI address space can be assigned to a > scatterlist segment using the public scatterlist API > as in the following example: > > my_sg_set_page(struct scatterlist *sg, > const void __iomem *ioaddr, > size_t iosize) > { > sg_set_page(sg, > virt_to_page(ioaddr), > (unsigned int)iosize, > offset_in_page(ioaddr)); > sg_init_marker(sg, 1); > } > > If the virtual address obtained from ioremap() is not > backed by a page struct, virt_to_page() returns an > invalid page pointer. However, sg_copy_buffer() can > correctly recover the original virtual address. Such > addresses can successfully be assigned to scatterlist > segments to transfer data across the PCI bus with > sg_copy_buffer() if it were not for the crash in > PageSlab() when called by sg_miter_stop(). I thought we already agreed in general that putting things that don't have struct page into the scatter list was not allowed? Jason