Received: by 2002:a05:6358:5282:b0:b5:90e7:25cb with SMTP id g2csp3415883rwa; Tue, 23 Aug 2022 04:31:59 -0700 (PDT) X-Google-Smtp-Source: AA6agR6iG8SQJw/GgLAghPkjGP8rmDUPk8KT/abwVWSS+wGY6Bomr015oQfF1hWusKjqsOh4TkmK X-Received: by 2002:a05:6402:1041:b0:446:b290:ea94 with SMTP id e1-20020a056402104100b00446b290ea94mr3223138edu.389.1661254205126; Tue, 23 Aug 2022 04:30:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661254205; cv=none; d=google.com; s=arc-20160816; b=h/EwnhXXF0KuNKHGIe5RKQ894ZTOjomvNZIpEDd/VaOyTja2CmiWKxJiHete5bSJvX SWcZa21WtLbnOQN4HOMJ8pFXbKHdxQRrVZGHFBz9A2g0OWr8RtxxiQo5LdB3SfVzcF4C OEM71YgPVBQND8kszZvaiqzUSYYazhsRVhMV6zzW8msaav/D6bxKtKnLm4Q5e97qauza orYQxl3X4LbROGpemw4bxdocrvm1JRLzN/TxqqO1LxogG9cTphdnWiFzjFOGjYfKBls4 9LetsM4DVjjThiGzrVL9ksNB1LA6EwDDGr/8VucxFa8x9PAAbN+3B+KHF/Qo5Xq1jhXY ZeFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=fU1sWWYyBU87ROT90kz+pR6tLUYd124m1auO6q3iVxg=; b=YzniKnA0KUAxEsZcPZe3Ik8yHkIXbFBeuldjYYBHhqe1VpmUhI9yNIbfl7BQbPGv/G 1KefuAN8FWEj38BCgB361pgsCXjkoDJcb6B1zcpz6hnLPQguHU8QUqPF9KmLpacJWmcm ey+YphoxTlWXRkB61h4SFie5Tpu2QGfjEbNhKghUMLj353So66AS+vk0ff73G/1ZDSvu 33M3BrJA+o3Rh1HGDL5tG0hLB8Iuv3hRY+sdbuMeL5t7L9t00RVrJEA8lEmRy0WsfTuM JsW0KmE7TZLL5e+Z9WW0M1OvMK5oFMfMWckuLiVjshMvrlaGnoNIbxmMAAVRcKBxT5Z3 HQoA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=EG+bqQhU; 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=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ht16-20020a170907609000b0073159f049ddsi12223002ejc.659.2022.08.23.04.29.37; Tue, 23 Aug 2022 04:30:05 -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=@linuxfoundation.org header.s=korg header.b=EG+bqQhU; 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=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1352756AbiHWKIt (ORCPT + 99 others); Tue, 23 Aug 2022 06:08:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43446 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1352563AbiHWKCH (ORCPT ); Tue, 23 Aug 2022 06:02:07 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8D2907C330; Tue, 23 Aug 2022 01:50:04 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 012F761386; Tue, 23 Aug 2022 08:50:04 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E4854C43470; Tue, 23 Aug 2022 08:50:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1661244603; bh=e+yJzTQerwJUBXmocqiz1bulRsPaY47NFWa5KTCk2WM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=EG+bqQhUiDnE6DM745jBTJu6SKoQ+Vuoz4AvQn3Uie0qQ+mrC5Al/I6VFV9GxYQRS 8g9MYWXzWJFbRAJoklzS+ZGh8QwqVHUjp2YOzbPZMQ79OUDEUnCaDO+605TsQnT8Ex F3NCgQi3eFUx3UOWGppFM29QZh4IcRKVw0mF3lWA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Mikulas Patocka , Mike Snitzer Subject: [PATCH 4.14 163/229] dm raid: fix address sanitizer warning in raid_status Date: Tue, 23 Aug 2022 10:25:24 +0200 Message-Id: <20220823080059.492496579@linuxfoundation.org> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20220823080053.202747790@linuxfoundation.org> References: <20220823080053.202747790@linuxfoundation.org> User-Agent: quilt/0.67 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham 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 From: Mikulas Patocka commit 1fbeea217d8f297fe0e0956a1516d14ba97d0396 upstream. There is this warning when using a kernel with the address sanitizer and running this testsuite: https://gitlab.com/cki-project/kernel-tests/-/tree/main/storage/swraid/scsi_raid ================================================================== BUG: KASAN: slab-out-of-bounds in raid_status+0x1747/0x2820 [dm_raid] Read of size 4 at addr ffff888079d2c7e8 by task lvcreate/13319 CPU: 0 PID: 13319 Comm: lvcreate Not tainted 5.18.0-0.rc3. #1 Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011 Call Trace: dump_stack_lvl+0x6a/0x9c print_address_description.constprop.0+0x1f/0x1e0 print_report.cold+0x55/0x244 kasan_report+0xc9/0x100 raid_status+0x1747/0x2820 [dm_raid] dm_ima_measure_on_table_load+0x4b8/0xca0 [dm_mod] table_load+0x35c/0x630 [dm_mod] ctl_ioctl+0x411/0x630 [dm_mod] dm_ctl_ioctl+0xa/0x10 [dm_mod] __x64_sys_ioctl+0x12a/0x1a0 do_syscall_64+0x5b/0x80 The warning is caused by reading conf->max_nr_stripes in raid_status. The code in raid_status reads mddev->private, casts it to struct r5conf and reads the entry max_nr_stripes. However, if we have different raid type than 4/5/6, mddev->private doesn't point to struct r5conf; it may point to struct r0conf, struct r1conf, struct r10conf or struct mpconf. If we cast a pointer to one of these structs to struct r5conf, we will be reading invalid memory and KASAN warns about it. Fix this bug by reading struct r5conf only if raid type is 4, 5 or 6. Cc: stable@vger.kernel.org Signed-off-by: Mikulas Patocka Signed-off-by: Mike Snitzer Signed-off-by: Greg Kroah-Hartman --- drivers/md/dm-raid.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/drivers/md/dm-raid.c +++ b/drivers/md/dm-raid.c @@ -3394,7 +3394,7 @@ static void raid_status(struct dm_target { struct raid_set *rs = ti->private; struct mddev *mddev = &rs->md; - struct r5conf *conf = mddev->private; + struct r5conf *conf = rs_is_raid456(rs) ? mddev->private : NULL; int i, max_nr_stripes = conf ? conf->max_nr_stripes : 0; bool array_in_sync; unsigned int raid_param_cnt = 1; /* at least 1 for chunksize */