Received: by 10.223.185.116 with SMTP id b49csp655147wrg; Wed, 14 Feb 2018 05:03:55 -0800 (PST) X-Google-Smtp-Source: AH8x226qplDjHfCKPWlEE7Aag1y+D0Bd9hPj7WAN3JEg+sY2v1ixSsHEtmluykEYzALDoBxkcb9b X-Received: by 10.101.102.73 with SMTP id z9mr3846817pgv.448.1518613435713; Wed, 14 Feb 2018 05:03:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1518613435; cv=none; d=google.com; s=arc-20160816; b=nfEHYS5RHLdlh56zY6Q9Enadj98JO9k4Qt9GzUazc0BHVog6XKHrzswxZ18Rdrv2Ve KZeEL52LGDlKycLtlBfOcyQO5bZYSVvuEzZHd+iL4wPZWUWmO4yx4PaidClLqnNElHfx 07MQMma2KaI6UQpYjwT+BgdukUds7L4fA+F7rV35hMQGxRB4oGEs/0sg6m5mMl7w0CyZ mJ8t/lSEbQ2EZRLsiVROdr/BhWNcW6eNaF9KU8eS4xvC67C2Cx2/lfFR4PSrmXE8yptA r49bsFLpdRoFsn1c/mqNBzJ9IAKD3GgqsCCQgFyLtNbhhXjO1CcCDC1a3+jbpemN6NZH Yj5A== 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 :content-language:mime-version:user-agent:date:message-id:subject :from:cc:to:dkim-signature:arc-authentication-results; bh=ck6q5mxC82TQaBhC1hgn+1VzuCQfneHY9vdPlqPhs/E=; b=nk3fLlEPpOcB1SCfv03pcXWTk5IeNL8+42DzyOOR5x1mLcDfq9g7laA5zt3NIraSgR +VvApdQ/Gtz85rz7/9EWNA/wgjZm947wx3ds/bDC0dKGZbfn5QIqdRf3lSg+mt5scDMO UIftQXbiF3VXRZscYj/R3ombBxAqBEp1XDlvY5tvsQvi29qLaTU9D/sQYQPQDxYTCKF4 s72xV/RiyFf0mhjlw3G+DsGll/hNAsdoce19zk+eRuPEFVYXACdP5bfOpe0YxHa1/hCc 4XLBUCocoV1CtmvJfTFnab0TQTt/NBNg7zJmuCDW45kh0/1vGCzgIe6vCr2C8aGSEdD7 kiTA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=CzA9q62S; 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 s13si3171145pgp.145.2018.02.14.05.03.32; Wed, 14 Feb 2018 05:03:55 -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; dkim=pass header.i=@gmail.com header.s=20161025 header.b=CzA9q62S; 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 S967730AbeBNNCu (ORCPT + 99 others); Wed, 14 Feb 2018 08:02:50 -0500 Received: from mail-wm0-f65.google.com ([74.125.82.65]:36866 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S967589AbeBNNCt (ORCPT ); Wed, 14 Feb 2018 08:02:49 -0500 Received: by mail-wm0-f65.google.com with SMTP id v71so21896445wmv.2 for ; Wed, 14 Feb 2018 05:02:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:cc:from:subject:message-id:date:user-agent:mime-version :content-language:content-transfer-encoding; bh=ck6q5mxC82TQaBhC1hgn+1VzuCQfneHY9vdPlqPhs/E=; b=CzA9q62SORxWyFXYxPn6fiQfV5jBdRcFCG9NDqnQYH/bgv965Bp97WmoJKH4YLRMSG YNzCGMx4KfkLQGu63Wcg1Y3Qp80gXLjyfOStoO7Pxq9KE89ijShiWo/FrJ8ZGk1gw8hK 4w5dv7PyE+KZMc6oLvTbcROX28jYBkVkV6HEsdvZVd9s+Pk6gsROM/8yScjQhcTGsIs1 FpqzynGS4CX4f32nU2KAJVhkyHiI1SZake7H1hy5Br4afrZ+Xit3Y6qVy3losujRsjcQ sgNoHNUBGWe+2BO+mEVM/2t3cGjFsUrzAR/V3fJTn/z8T1ce5Pt9HBIl//voTcwAc0vR JAXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:cc:from:subject:message-id:date:user-agent :mime-version:content-language:content-transfer-encoding; bh=ck6q5mxC82TQaBhC1hgn+1VzuCQfneHY9vdPlqPhs/E=; b=bt2eiKLz6WIvGEuqy/M5nUdJbc/0Bfexrhkqxqcp/zNRkW7CA3NEqXz3bmyND8jPH/ a/DwxUjE7V407z1m/9YkMgJaWCVYBwkyUx4IvpNQwu7jR7B8yTjPlXx4hX8WT56YKdUC cmpDLa7aoNnaCcZSy6IHFwYGGLAzTV918zg4qyyriiNI0BnSxm1dQHUFZLOHamj6DozK mOS9mb62hVfRXBKm2rueJkEQAvydNXhcNaQ9mgMsfiqA5XXqDF/G2zTiVHxxqlGTSF/1 z6x/Pdn2TKLBS/EHVQRAsQX3RIvw3BwkkxnhIvFBXL8vRb+xdxpm7AoM5z1gau1zNsq1 uBwg== X-Gm-Message-State: APf1xPCYtD+/quC1QCLcQ5srILQZT+cq63pVj2XRYES+GRmrNnEg8nsP KcM5GB4W5ZcmK1YAzmyKCk/cMw== X-Received: by 10.28.12.75 with SMTP id 72mr3848453wmm.97.1518613368215; Wed, 14 Feb 2018 05:02:48 -0800 (PST) Received: from [192.168.2.27] (218.83.broadband9.iol.cz. [90.176.83.218]) by smtp.gmail.com with ESMTPSA id t4sm10614089wmt.16.2018.02.14.05.02.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 14 Feb 2018 05:02:47 -0800 (PST) To: NeilBrown , Mike Snitzer , device-mapper development Cc: Linux Kernel Mailing List From: Milan Broz Subject: DM Regression in 4.16-rc1 - read() returns data when it shouldn't Message-ID: <70cda2a3-f246-d45b-f600-1f9d15ba22ff@gmail.com> Date: Wed, 14 Feb 2018 14:02:46 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, the commit (found by bisect) commit 18a25da84354c6bb655320de6072c00eda6eb602 Author: NeilBrown Date: Wed Sep 6 09:43:28 2017 +1000 dm: ensure bio submission follows a depth-first tree walk cause serious regression while reading from DM device. The reproducer is below, basically it tries to simulate failure we see in cryptsetup regression test: we have DM device with error and zero target and try to read "passphrase" from it (it is test for 64 bit offset error path): Test device: # dmsetup table test 0 10000000 error 10000000 1000000 zero We try to run this operation: lseek64(fd, 5119999988, SEEK_CUR); // this should seek to error target sector read(fd, buf, 13); // this should fail, if we seek to error part of the device While on 4.15 the read properly fails: Seek returned 5119999988. Read returned -1. for 4.16 it actually succeeds returning some random data (perhaps kernel memory, so this bug is even more dangerous): Seek returned 5119999988. Read returned 13. Full reproducer below: #define _GNU_SOURCE #define _LARGEFILE64_SOURCE #include #include #include #include #include #include #include int main (int argc, char *argv[]) { char buf[13]; int fd; //uint64_t offset64 = 5119999999; uint64_t offset64 = 5119999988; off64_t r; ssize_t bytes; system("echo -e \'0 10000000 error\'\\\\n\'10000000 1000000 zero\' | dmsetup create test"); fd = open("/dev/mapper/test", O_RDONLY); if (fd == -1) { printf("open fail\n"); return 1; } r = lseek64(fd, offset64, SEEK_CUR); printf("Seek returned %" PRIu64 ".\n", r); if (r < 0) { printf("seek fail\n"); close(fd); return 2; } bytes = read(fd, buf, 13); printf("Read returned %d.\n", (int)bytes); close(fd); return 0; } Please let me know if you need more info to reproduce it. Milan