Received: by 2002:a05:6358:5282:b0:b5:90e7:25cb with SMTP id g2csp3468869rwa; Tue, 23 Aug 2022 05:23:35 -0700 (PDT) X-Google-Smtp-Source: AA6agR7aeVoeOw2SB7kCRa/o+N6UB/QHkev9Z1LXr/TB2HLzqCYwEP8K1MDHt8tpl0T4IyY4bc08 X-Received: by 2002:a17:90b:4c4f:b0:1fb:1c32:8e52 with SMTP id np15-20020a17090b4c4f00b001fb1c328e52mr3055434pjb.233.1661257415103; Tue, 23 Aug 2022 05:23:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661257415; cv=none; d=google.com; s=arc-20160816; b=L+VFiu+Nk0brI5S3B77s7OOyXk9EHxIPU5m4ijzwhzveiwYNaFYGzTmygnoEyBjmZG +vichQTxQTX64r+FWyj74/ObxNRnuTDi8WeXFCV+8GRVy2wJqxNpLWx5RDL/Tk5ae5+Y GNm6Ck9uxd9aiwILHOlk60ilsnWaHQWl6x0m1rqZNHvDcZezug/UsiV7K08RQpmD/CUY thN0S4NRPCydz1f7BjgLe6H7ZN4SkQ5OziuQuEI4L9dfHR7gVk1ePHZAGxJh88TUUnmh ZLsTiE7meoe0Cis+YiR48neZGaW37mGuPNiZuntOhtPoSE4VDnQsQgzGXFaWTTGnIMCz /+ew== 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=lqqLjseEtazzSzgbu4Z/B5j61dOIc4q3Cwl2MbT8a2o=; b=o48lFgooO+pVsLF9Shx5P320E3aPrO1I/PFDOKR+UPHavv5Oa3WEaCGZ4p1UJeGw0t G5HTBFQ5tw4FpHc/N8rgn+CKump1GQpcQvJJW9XW2djiE03ZxRMvW8tIlMP53jKBInRl fT1SsqKE+ofljshAjOJt9VcL+u7SZUYJKHarT4fHcVb9RykN2SrwfzTV53aDQa7tU/tu 4ZZVnrIug74Ye1ce6qxSazUstKR2srkBUA34273bquG5yexEzF/yF19cwDm15zCamXS0 0KOMgZfse6Ao1zjn2IHsB49eQyBYwjzTr6LltrhGLK2HU+Qe91fMKmOE3vwEktgFgFE5 N1QA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=FG4kHSYZ; 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 a186-20020a6390c3000000b00412b171b6b4si12799068pge.197.2022.08.23.05.23.24; Tue, 23 Aug 2022 05:23:35 -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=FG4kHSYZ; 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 S1356516AbiHWKvG (ORCPT + 99 others); Tue, 23 Aug 2022 06:51:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57916 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1356669AbiHWKmu (ORCPT ); Tue, 23 Aug 2022 06:42:50 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0D4FDAA4F3; Tue, 23 Aug 2022 02:10:18 -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 ams.source.kernel.org (Postfix) with ESMTPS id 487E0B81C4E; Tue, 23 Aug 2022 09:10:17 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 92A96C433D6; Tue, 23 Aug 2022 09:10:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1661245816; bh=yzDhTw2FwZxb0a4TllXhly0EDdMtkOqo9kzz3Fr7LWw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FG4kHSYZ6vJ0RIiYSXkBWRjKuzV6mwv9Zg8a+y2PuR/6+Z8kOGzIJgGZ/qZ8/q0d/ s5KpeDiDOZ0A0MV6ZU/eqi23srS+XGJnikfxDsQbS3ZiZujtW0Zl3dlMBSl0kREScA 9yr+3p5/mpv+ldsrl5BsoGqehAcvRrro1V525bh4= 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.19 198/287] dm raid: fix address sanitizer warning in raid_status Date: Tue, 23 Aug 2022 10:26:07 +0200 Message-Id: <20220823080107.507462683@linuxfoundation.org> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20220823080100.268827165@linuxfoundation.org> References: <20220823080100.268827165@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 @@ -3533,7 +3533,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; unsigned long recovery; unsigned int raid_param_cnt = 1; /* at least 1 for chunksize */