Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp7575072rwr; Wed, 10 May 2023 09:48:39 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ59bAVIau8e2q9rJxn5a3dWpp34jg2R58pYXalu4/L14H2V/8x/LgJs21jnK23OBXT6wKJX X-Received: by 2002:a17:90a:7f86:b0:250:888b:8882 with SMTP id m6-20020a17090a7f8600b00250888b8882mr10564476pjl.7.1683737319095; Wed, 10 May 2023 09:48:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683737319; cv=none; d=google.com; s=arc-20160816; b=Vz8CxxazGpJwSWN39Zu7mILizhVaGcf+mtcWzfU7i0jRRVexQhkHnGAT9sMTQFtSh/ +R9f6lmTPeYniccOrXJ1npd4UGI0F6Og73+brzneklQNvwlyCoBai/vnureIF7Ue3Rc9 MOjQchz9yryPQc7k0xk+FY5e/fU/zHEP5i/cqGnbz/103qCQvpNT86LMtVWCUQxrRW/L 0jhjtEGUnygyZhPWUKqa0jj3mgnN4zEJhosw2g0Q9aNbqJS9Dx63cB7G+MvKjzO4Ju91 dVxcieyyjx7Qza+NgR2t0wF8iKqxiFCWHyy+d9yhOLOppPoXkaKvbvxLLB8AKyq79Hsc LBlw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to :organization:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:dkim-signature; bh=c+QqxpiG1U+G+dOtpx1ITq0GjqRCMSQvjjIZjS6KV1Q=; b=LoBz80xU98n5TRYtXgIbHnXQ4t0wohKktDKupQw77SUgph6+zhXCSQZdqySK610FRB e7zK5Dql/Iiws3Cjds639oY8dmy/S4RWwvyr2nFuhtKlQMkX6GMUSCSOWcELR8ifNtSa rwh6k/lNqsFkdIBnrOVXx+TNfyr2wZMG6l7JMIqlbelWGiI96mXXLocV0sJzplg4qGOE 4Z1So6+fxQ93Mshz1mJNyWvwFGFFYaZR2l+f3+2tWzgPUGvRSRA8WyI1rgBUvtO6nEck Q7DhJ6PHsoE5bNtKlZpayNuUm4zzyIwJ6b5ggxZLEnSPaqXZ1TeseuN466iDFwDfSic/ Cb8A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=H8dalrmU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id o66-20020a17090a0a4800b0024e03b1f374si17796506pjo.22.2023.05.10.09.48.04; Wed, 10 May 2023 09:48:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=H8dalrmU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235547AbjEJQfJ (ORCPT + 99 others); Wed, 10 May 2023 12:35:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56122 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235465AbjEJQfG (ORCPT ); Wed, 10 May 2023 12:35:06 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7CD817DB2 for ; Wed, 10 May 2023 09:34:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1683736461; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=c+QqxpiG1U+G+dOtpx1ITq0GjqRCMSQvjjIZjS6KV1Q=; b=H8dalrmUObVeQnzjSPK/HgGXomIFqvd2N3o5srKlVhHFDiyHEW+kYAx5dMzH2lYyHxLk1h tl979B2/K+3+ilXPjIyo2A8NEqLLEgm/2qX3FS8KiVm5KxYvOCmMUbmMViDPviSILzbs26 zITsfyeZKIUQeg4QW1NOCEt5336Vyfs= Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-468-KDkSPGNoOH6hBRJdk2uEog-1; Wed, 10 May 2023 12:34:18 -0400 X-MC-Unique: KDkSPGNoOH6hBRJdk2uEog-1 Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-24df9b0ed7aso7438449a91.3 for ; Wed, 10 May 2023 09:34:18 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683736457; x=1686328457; h=content-transfer-encoding:in-reply-to:organization:from:references :cc:to:content-language:subject:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=c+QqxpiG1U+G+dOtpx1ITq0GjqRCMSQvjjIZjS6KV1Q=; b=i15z3M3zV+fVFPBZc4/XjaRvnLKm/kwwT08IRVA5d5r3gnIUuMVJBCeJAr4RrEQqSl 2Oa0Lr0PGK1M0/bgF+gbJ3XBGH1uC9jqhGSe9Sgx/7Sk16rWew/h/6ljfAxvgnaHE0c0 wHOjLxAmfGn6NoVGSGF1gQhPhUe6riL+oYI5AKDrANsrEORzpjlB8VPPY4F1ejckQaXs WIXYnANycyKkZ1f5c+I9O5A8vY95OvOddUSWwwfxR6Okdkhu6L2QqLqu3hLMfmcHc2CF xrXNc9dXEfj9WI+CbFYVIV5Fg4YJk6DqvVPwjDy3dzdQBznmgHdRA9Yf9qSSgkJ21uPO ywaw== X-Gm-Message-State: AC+VfDzCeUDAERIfbxT/SbBPpbW7ivCS6V4dd2H0cgC2ByS7OixeZsJB jKqV7Y1psLCvTQJ8ANvTQw6r5Yrb6fFVci89CyiPvzjf66FqyH9fAoASLCYx0mW7i5Xk7qdGyay QBRR3xcEVtQ5MNKOwdzH8W+KQ X-Received: by 2002:a17:90b:314e:b0:252:75ed:eff5 with SMTP id ip14-20020a17090b314e00b0025275edeff5mr1245108pjb.30.1683736457237; Wed, 10 May 2023 09:34:17 -0700 (PDT) X-Received: by 2002:a17:90b:314e:b0:252:75ed:eff5 with SMTP id ip14-20020a17090b314e00b0025275edeff5mr1245083pjb.30.1683736456926; Wed, 10 May 2023 09:34:16 -0700 (PDT) Received: from ?IPV6:2001:4958:15a0:30:5835:5bd3:f0c8:e5ef? ([2001:4958:15a0:30:5835:5bd3:f0c8:e5ef]) by smtp.gmail.com with ESMTPSA id gp24-20020a17090adf1800b0024e227828a9sm8880080pjb.24.2023.05.10.09.34.16 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 10 May 2023 09:34:16 -0700 (PDT) Message-ID: <48a47f2e-0506-ca0f-07d5-15918865cd19@redhat.com> Date: Wed, 10 May 2023 18:34:15 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0 Subject: Re: [PATCH 2/4] usb: usbfs: Use consistent mmap functions Content-Language: en-US To: Ruihan Li , Alan Stern Cc: linux-mm@kvack.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Pasha Tatashin , Matthew Wilcox , Andrew Morton , Christoph Hellwig , Greg Kroah-Hartman , stable@vger.kernel.org References: <20230510085527.57953-1-lrh2000@pku.edu.cn> <20230510085527.57953-3-lrh2000@pku.edu.cn> From: David Hildenbrand Organization: Red Hat In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-5.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE, T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10.05.23 17:41, Ruihan Li wrote: > Hi Alan, > > On Wed, May 10, 2023 at 10:38:48AM -0400, Alan Stern wrote: >> On Wed, May 10, 2023 at 04:55:25PM +0800, Ruihan Li wrote: >>> When hcd->localmem_pool is non-null, it is used to allocate DMA memory. >>> In this case, the dma address will be properly returned (in dma_handle), >>> and dma_mmap_coherent should be used to map this memory into the user >>> space. However, the current implementation uses pfn_remap_range, which >>> is supposed to map normal pages (instead of DMA pages). >>> >>> Instead of repeating the logic in the memory allocation function, this >>> patch introduces a more robust solution. To address the previous issue, >>> this patch checks the type of allocated memory by testing whether >>> dma_handle is properly set. If dma_handle is properly returned, it means >>> some DMA pages are allocated and dma_mmap_coherent should be used to map >>> them. Otherwise, normal pages are allocated and pfn_remap_range should >>> be called. This ensures that the correct mmap functions are used >>> consistently, independently with logic details that determine which type >>> of memory gets allocated. >>> >>> Fixes: a0e710a7def4 ("USB: usbfs: fix mmap dma mismatch") >>> Cc: stable@vger.kernel.org >>> Signed-off-by: Ruihan Li >>> --- >>> drivers/usb/core/devio.c | 10 ++++++++-- >>> 1 file changed, 8 insertions(+), 2 deletions(-) >>> >>> diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c >>> index b4cf9e860..5067030b7 100644 >>> --- a/drivers/usb/core/devio.c >>> +++ b/drivers/usb/core/devio.c >>> @@ -235,7 +235,7 @@ static int usbdev_mmap(struct file *file, struct vm_area_struct *vma) >>> size_t size = vma->vm_end - vma->vm_start; >>> void *mem; >>> unsigned long flags; >>> - dma_addr_t dma_handle; >>> + dma_addr_t dma_handle = DMA_MAPPING_ERROR; >>> int ret; >>> >>> ret = usbfs_increase_memory_usage(size + sizeof(struct usb_memory)); >>> @@ -265,7 +265,13 @@ static int usbdev_mmap(struct file *file, struct vm_area_struct *vma) >>> usbm->vma_use_count = 1; >>> INIT_LIST_HEAD(&usbm->memlist); >>> >>> - if (hcd->localmem_pool || !hcd_uses_dma(hcd)) { >>> + /* In DMA-unavailable cases, hcd_buffer_alloc_pages allocates >>> + * normal pages and assigns DMA_MAPPING_ERROR to dma_handle. Check >>> + * whether we are in such cases, and then use remap_pfn_range (or >>> + * dma_mmap_coherent) to map normal (or DMA) pages into the user >>> + * space, respectively. >>> + */ >> >> Another stylistic issue. For multi-line comments, the format we use is: >> >> /* >> * Blah, blah, blah >> * Blah, blah, blah >> */ >> >> Alan Stern > > Yeah, I am pretty sure it is another style difference with the net > subsystem. Again, in the next version, I'll follow the coding style that > you have pointed out. Documentation/process/coding-style.rst spells out that net/ and drivers/net/ are "special". Regarding breaking long lines, it's just an inconsistent, undocumented mess IIRC ... -- Thanks, David / dhildenb