Received: by 2002:ac0:98c7:0:0:0:0:0 with SMTP id g7-v6csp147630imd; Wed, 31 Oct 2018 16:16:09 -0700 (PDT) X-Google-Smtp-Source: AJdET5cwT6C+ZOSIFwgLDF9MH1UcjrFsTONL2x0tefnb0JvUCWjR4W5zpvFXb8O96ikv4nnb1qfz X-Received: by 2002:a63:5a57:: with SMTP id k23mr4931038pgm.5.1541027769208; Wed, 31 Oct 2018 16:16:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1541027769; cv=none; d=google.com; s=arc-20160816; b=LQ8ec7Qp3HbrZaDmlAtqXHLX7Cjw/9Weio0lUlTfCkkdUve4VOMmzMG+sAIoy5qDXE l34UJdH4zojf8h7tgyBAuQ3GAo6eOv9hTYd9b/Wj0IRBUt8eLbVKHURecjWRliilqYYc FoRdV2JKLhNn17ROjpEH1DhF132IPMMEUCt0eFcj2XmhkNFClcs2Mte0onLDyeh8yE8A LLgBwKR3zD3cCFQrhsDixQDwnL19uu58MKswN5q4jy6rnHy+UX9Puajy9hNeOXvz7Jpl kIwkNfUzrHKyVcPNw3uAqRQK/Z91JC1I8mDhnNmuCPb+gpZII0Fh+1kwc0cpr1Jj9L5k P0xg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=tdu9+p3TgnFYq9RfdDyRKZgjljfpzqLqWohfLiWsFLI=; b=XXYAzIZXGNySxx+jpDspY5ZTWbEZWkEsG6XhlFCdmOC89kOMOlkR+owuOcUSZrnQ5q bOEabdKwuWNyDgsNvoNhPnGsxfAe1bFA1Nr3MgAvansIdheDLoR6EMllGAr1OQIKvuQ0 3PrVDSjAtXNzyfqTkKgiaCier1PMhA8Cc/oP8EkMaQHoa6293/eHPjTXs2BWfoeJE/VM Pz1wMyJISRttmWkcu7dd36kVTvnUSlNC9eb+0n9CY3Gu8xN755h4UIF6W7g99t2bJB2s 1QGEdJEWHaW/FXmyxjb6h+tY8Q64TPI2cGh/IkQSs0/DiAV6/uEJm2nQi6U82OZeLrHB FbhA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=cGliCDoA; 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=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v7-v6si28711415plp.420.2018.10.31.16.15.54; Wed, 31 Oct 2018 16:16:09 -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=@kernel.org header.s=default header.b=cGliCDoA; 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=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732139AbeKAIMN (ORCPT + 99 others); Thu, 1 Nov 2018 04:12:13 -0400 Received: from mail.kernel.org ([198.145.29.99]:36796 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732094AbeKAIMM (ORCPT ); Thu, 1 Nov 2018 04:12:12 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 237A12085A; Wed, 31 Oct 2018 23:11:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1541027519; bh=tHrttO4wnHzs3MgD5CI088CEOQIQdsSASAp6WRXK1dc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cGliCDoA8cRgpUzFU96AOCTawE0LH3fh2YxTzPwxg1JORXxLYf8QUP9bzkYYdq8ig DeHrIbJPVHhhzoKNrIYrw8LpJc5zVEam2obeA0emDnpL0Ut9PFeQTtdoNQKTl5KLwH OJ9wQCWCaK4ZYbWrblEgLme/D82xVVPiCj/R1HOs= From: Sasha Levin To: stable@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Theodore Ts'o , stable@kernel.org, Sasha Levin Subject: [PATCH AUTOSEL 4.4 24/32] ext4: fix argument checking in EXT4_IOC_MOVE_EXT Date: Wed, 31 Oct 2018 19:11:29 -0400 Message-Id: <20181031231137.29429-24-sashal@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181031231137.29429-1-sashal@kernel.org> References: <20181031231137.29429-1-sashal@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Theodore Ts'o [ Upstream commit f18b2b83a727a3db208308057d2c7945f368e625 ] If the starting block number of either the source or destination file exceeds the EOF, EXT4_IOC_MOVE_EXT should return EINVAL. Also fixed the helper function mext_check_coverage() so that if the logical block is beyond EOF, make it return immediately, instead of looping until the block number wraps all the away around. This takes long enough that if there are multiple threads trying to do pound on an the same inode doing non-sensical things, it can end up triggering the kernel's soft lockup detector. Reported-by: syzbot+c61979f6f2cba5cb3c06@syzkaller.appspotmail.com Signed-off-by: Theodore Ts'o Cc: stable@kernel.org Signed-off-by: Sasha Levin --- fs/ext4/move_extent.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/fs/ext4/move_extent.c b/fs/ext4/move_extent.c index 05048fcfd602..6b5e2eddd8d7 100644 --- a/fs/ext4/move_extent.c +++ b/fs/ext4/move_extent.c @@ -526,9 +526,13 @@ mext_check_arguments(struct inode *orig_inode, orig_inode->i_ino, donor_inode->i_ino); return -EINVAL; } - if (orig_eof < orig_start + *len - 1) + if (orig_eof <= orig_start) + *len = 0; + else if (orig_eof < orig_start + *len - 1) *len = orig_eof - orig_start; - if (donor_eof < donor_start + *len - 1) + if (donor_eof <= donor_start) + *len = 0; + else if (donor_eof < donor_start + *len - 1) *len = donor_eof - donor_start; if (!*len) { ext4_debug("ext4 move extent: len should not be 0 " -- 2.17.1