Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp496610imm; Wed, 19 Sep 2018 02:17:35 -0700 (PDT) X-Google-Smtp-Source: ANB0VdaFtQxL0okeylUCoTlX5QRhazDeyYR/saM47NqRyf+JANW/FsfGL/TgDML5/WwkIV2Xs9MM X-Received: by 2002:a17:902:7683:: with SMTP id m3-v6mr34094862pll.255.1537348655900; Wed, 19 Sep 2018 02:17:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1537348655; cv=none; d=google.com; s=arc-20160816; b=h816FBDIchvbup0lnvsrCRfwNuo4p5TDiMpQAVw2XvlgkqYIpjOmnvIcX9mY7vS1NT 2F/c4JbQ9z1ZYQP/Ua3GQXXxKOvrR8mmH7x0bQ70eLS5JzrqGPi5pEREExFlUtkT5rtc kEd8EiQUEYm2Y8NIJljb2u1v8F8YU9vbIlYZUFFr9510Rltut/wawsH9eeYtM6XF/GX4 SDWr+rcLMK9Q/g21SbLw/GJ0pzSYHwpAz07cdZwHu0hUodCezq8Y6EqzGvCfRPaNGsep XygMmHtSyznG4wAsOzFm62mqMyXn6+cP43XMfE9muOq6h6g6KCaxvMbDb+/7ioOC/VnS tyjQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :mime-version:dkim-signature; bh=bQnwIJ31XljuuH+lyaxBQEx9HBGqzyKsFYmfFbFifQw=; b=yMC2a+CCqrg7fwnz7a0/vhF+UyyoD7awAJrzgRIb+AmNlWwY/xbIk+Rb4IQHftP7bt vTFr81QNi6NxqCHrDQwj6K6IXojp+8a8I2pQuC27Aog0B7WdcG9BlS4rZ5d9QsBf96bu l4Dy4xcKn02PjbMsOf6wfPJvl4yKp00NWAKydIMBPyBqfZ0JL8h1Y6eZht0si3wkX5oZ 7Wd4wMeCc/E8YpqlTi3m3nM9DgEqkL5A2uM6RZDXRVSJm12MiSleNQiiG8ESFkGi0wlm T8QQ90CP7q/DTZioETMTJDAmSdCACl6iOMLmMZczqEiRS3j1x6YcI4disUrU7DZKtXnH Az1g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=B4sr8rQg; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u190-v6si20407209pgu.305.2018.09.19.02.17.20; Wed, 19 Sep 2018 02:17:35 -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=@gmail.com header.s=20161025 header.b=B4sr8rQg; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731118AbeISOw4 (ORCPT + 99 others); Wed, 19 Sep 2018 10:52:56 -0400 Received: from mail-wm1-f67.google.com ([209.85.128.67]:39637 "EHLO mail-wm1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730984AbeISOwz (ORCPT ); Wed, 19 Sep 2018 10:52:55 -0400 Received: by mail-wm1-f67.google.com with SMTP id q8-v6so6023761wmq.4; Wed, 19 Sep 2018 02:15:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to:cc; bh=bQnwIJ31XljuuH+lyaxBQEx9HBGqzyKsFYmfFbFifQw=; b=B4sr8rQgRApaUKumB+8XoK3LOk/JU3MZF+3/rR1iigOz8MH/nebxq492OfdjnOhzh9 jae0UEYzRijLcvXyIRCI9CmfwinTbtVA2+UG6lbIiCU2NEkcMBLUquo/0aPNbRq1RbzR IfG4kDdCbauiaFpKxkb4Gr46fvNPgXXuRRnWH55R+zjmNyWIfZJMwEp+/Efokr6IZcGy G7MeXBYxsxWBgA35nJ+1tKFTLGIYRV3QiEZFLiXrHLCVMbbL+dGzlEFSBBQ9+WL2/cNF hGOJjBPSj1rGW720twIwz0doODos1VH2/M7LWsJbszKHKax1brqB5eXrAC5+bDIuAHPc 30NA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=bQnwIJ31XljuuH+lyaxBQEx9HBGqzyKsFYmfFbFifQw=; b=KgWCqH9f0zMQDudzA4qXG2AuIPKFcpm35VyZFj/IR48yA6OPd9+FfCOD/AWUOVHKYa idZXTgZBu72RwBzNsM9UNUhhg9AXUm5ekKWY3xEZOT/LXjvDBFvo4YzsOTm2CUFkTfAx oKnk0tigR+wc+yNAuOaAM9Gi02iS23rsc98dOFZ6/GfHvo0uDqObtk1xyQCyTrWcTohH AaexCwtmnxUblPqMfaC92oa7RS1aVAArb/qVkuHUOu8Lj1IXtPDCCF2imi011EdYhc5n Rw1iISVAnu8ZCcYFAQRYDbdOwFZ1DmNohWe5KHhqWoWvPG57oInsx0po3eDMJJCPnyvD emxw== X-Gm-Message-State: APzg51CJp0rY1UUDbS65pFTBcxA6Zan0ERToP3O+NwSxN+xoSwDz5vSk Lf9v2jTk0gNjLcR1MLlFeUELHOGB3JJx2jwhY2jGOQlQ X-Received: by 2002:a1c:e286:: with SMTP id z128-v6mr18716269wmg.30.1537348555040; Wed, 19 Sep 2018 02:15:55 -0700 (PDT) MIME-Version: 1.0 From: Ming Lei Date: Wed, 19 Sep 2018 17:15:43 +0800 Message-ID: Subject: block: DMA alignment of IO buffer allocated from slab To: linux-block , linux-mm , Linux FS Devel , "open list:XFS FILESYSTEM" , Dave Chinner , Vitaly Kuznetsov , Linux Kernel Mailing List Cc: Christoph Hellwig , Jens Axboe , Ming Lei Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Guys, Some storage controllers have DMA alignment limit, which is often set via blk_queue_dma_alignment(), such as 512-byte alignment for IO buffer. Block layer now only checks if this limit is respected for buffer of pass-through request, see blk_rq_map_user_iov(), bio_map_user_iov(). The userspace buffer for direct IO is checked in dio path, see do_blockdev_direct_IO(). IO buffer from page cache should be fine wrt. this limit too. However, some file systems, such as XFS, may allocate single sector IO buffer via slab. Usually I guess kmalloc-512 should be fine to return 512-aligned buffer. But once KASAN or other slab debug options are enabled, looks this isn't true any more, kmalloc-512 may not return 512-aligned buffer. Then data corruption can be observed because the IO buffer from fs layer doesn't respect the DMA alignment limit any more. Follows several related questions: 1) does kmalloc-N slab guarantee to return N-byte aligned buffer? If yes, is it a stable rule? 2) If it is a rule for kmalloc-N slab to return N-byte aligned buffer, seems KASAN violates this rule? 3) If slab can't guarantee to return 512-aligned buffer, how to fix this data corruption issue? Thanks, Ming Lei