From patchwork Mon Jul 10 08:32:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linke Li X-Patchwork-Id: 13306426 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id ED7EAEB64DC for ; Mon, 10 Jul 2023 08:39:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6DAB16B0074; Mon, 10 Jul 2023 04:39:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 68B4F6B0075; Mon, 10 Jul 2023 04:39:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 552CD6B0078; Mon, 10 Jul 2023 04:39:48 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 492FF6B0074 for ; Mon, 10 Jul 2023 04:39:48 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id EFB4A1602E3 for ; Mon, 10 Jul 2023 08:39:47 +0000 (UTC) X-FDA: 80995054014.15.47AA6E3 Received: from out203-205-221-149.mail.qq.com (out203-205-221-149.mail.qq.com [203.205.221.149]) by imf01.hostedemail.com (Postfix) with ESMTP id E581440014 for ; Mon, 10 Jul 2023 08:39:44 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=foxmail.com header.s=s201512 header.b=ergi7q7o; spf=pass (imf01.hostedemail.com: domain of lilinke99@foxmail.com designates 203.205.221.149 as permitted sender) smtp.mailfrom=lilinke99@foxmail.com; dmarc=pass (policy=none) header.from=foxmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1688978386; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=4i5QUV9T4fYpJF6lWkKhhD0RINkSEU8kNV+b+l4tVlA=; b=Wm+qV8HGu2m8lzcDC4Rysx6bA/B/LVcxIs7IK1iQ8066nAY137BKr5YmT25lGxNFxgspvc JQIE2RT6nLgFQeJioXJrNHudi32F1nIbv0IMB62NhzPJJNDWlPF/7FNcgv0IwPSuVFoDBL Xcddj+uXH+NUBdXUjFA4CNZZ+bpUyM8= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1688978386; a=rsa-sha256; cv=none; b=QfdNQNJa/fCMpKlrd1oLk9+iFbO8OkntY/4Bks+W+nGDONeY22iz6vSKPk4z1LExtVTMEQ Bu1vbMNvt3mrQLXVreccCJxdI19qP9vtczGYwtEzEtoHJ7UKm/9sl5eXCqusr2UHaioFFK TaQ4GnNQMeiFdL17D5Q0gs558JhGpfY= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=foxmail.com header.s=s201512 header.b=ergi7q7o; spf=pass (imf01.hostedemail.com: domain of lilinke99@foxmail.com designates 203.205.221.149 as permitted sender) smtp.mailfrom=lilinke99@foxmail.com; dmarc=pass (policy=none) header.from=foxmail.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1688978356; bh=4i5QUV9T4fYpJF6lWkKhhD0RINkSEU8kNV+b+l4tVlA=; h=From:To:Cc:Subject:Date; b=ergi7q7o28vlMyHUD7dNKL5eGCejpQvI15XRl7UXQIcxEj2yKqWNMOAHy3Mf3ertA n9eO/4buEzzhHgHhBBKGaZxmt6CCmXnluvGz1/GDkax8vpBs1px2cvddEqjxBIZ0dH /fSZAZ/rw6qQDNFgZdWfQbc6s50xmi+Sq/1/oFK4= Received: from linkpc.nju.edu.cn ([58.213.8.104]) by newxmesmtplogicsvrszb1-0.qq.com (NewEsmtp) with SMTP id 83499E43; Mon, 10 Jul 2023 16:32:52 +0800 X-QQ-mid: xmsmtpt1688977972t1gkhqqnj Message-ID: X-QQ-XMAILINFO: Mm/8i8/T4yneOrBZtagOMB8w0L2ShAiZqzSQ/bHu49QVA1pORfWXS7M7rYN/CM e6rtjTlwdslgyDuWLoLnI0E5IHuudYTHD6QFQIHOMzSJIGwmtUircgSkDZTNdeM5pUSGt22VPbhc rSt5jVEcgkxbJLkade6H0Bj1p2/aDsQxlXJg+A637oIy0Qfz4W0bnrqJhivxa/4i/kuSGwHv7xwA 5ljq2N37ypI19ydKu17puAGgj0MLLriNJWEWzfz1K0QSWJVrcYYFS2vSK490Sw/EyfkJ94mFZ0s2 qXlV0pGd4q4gxKJgEq+WPs1YvLQGrG5QuPyn51yUdf+itd00NFsX6HaX13MWIfCLyZJaLatmf3FL Ovbr+ElmyaRToLSQQUXecqYKPbkaCxfNPvRsCJe6geXAjLkkVT6nS9KzctTGxxWgMneDEVz9yJwH 17rH3UWR349vCdvpSgwM+IghZ696uSmQChIwMuSy3sIlqq/sjiH2/BJOrOr56y/tGZZMeJrTrMxg lndMeRWab0uiZ2Q+zDkgG5AzUet9CKFAPscKFm/vWwabmU9u837ysuvpPnZDEIY+xELzzG2mrFji EbsouKNafflkGw4EXcPzhrPmJjtoBd/OZhjs725gW+KVUgT+5w5QIU4fcGk7SdgCGaCly8BA4/MQ 17i7sBijoVRSZh4IFYiGJOiya4b1HtkWnU7sogL2qHob0ATPCz5yRuQ6jcGT/8b5asfq/MCa4zTK wUAyzR3M+Ty9t8D9/xAZ2MbpL+Py88bdDKbGJSRPBXNUeRK6hAgCbh2Ai+2OBCu0wvQsrXtbeK7F DU6TdmHiVeGWmpW3Xn6fioOQWf/50Mt4x0KqSf5VgkIDyiliYbtpi6ezO5WUgY5EbRXRnShOb/BR HiYetc7gt0m2Hgdl0fbE9TV8RaCVON9QLLeHaTmjTPpOyLdnaK1OmW/ln378vkbgl6GEoZv45+I1 5/5fGG4AHf7BHs/WwKT5jVjZDLk6zBbrrt1n0JermUPVYr6t3lNZKN+F1N2a1oW5MjgfjCjDE= X-QQ-XMRINFO: NS+P29fieYNw95Bth2bWPxk= From: Linke Li To: linux-mm@kvack.org Cc: llvm@lists.linux.dev, linux-kernel@vger.kernel.org, trix@redhat.com, ndesaulniers@google.com, nathan@kernel.org, muchun.song@linux.dev, mike.kravetz@oracle.com, Linke Li Subject: [PATCH] hugetlbfs: Fix integer overflow check in hugetlbfs_file_mmap() Date: Mon, 10 Jul 2023 16:32:40 +0800 X-OQ-MSGID: <20230710083240.512379-1-lilinke99@foxmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Rspamd-Queue-Id: E581440014 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: wqcw8zdd6y9goxg4xubpnchin9sts4ap X-HE-Tag: 1688978384-416913 X-HE-Meta: U2FsdGVkX1+z1VnfktJq8qMRdwxFNewP6OLGSOxNZRzMk9XFvocJEvEyH/e7ydWyDuZ5dxYmdDB80u0A9WzqOwvxliKf4sIWXaIYXmYiZ8qVZSkmjxeY4DMPIeJt0rPFGnDmA0OfjzuXa1O3Gsi4q29nvHhr38XJwHA2r8EfwH09Hh2PDGIRT4C6MKpWwQsta6FWsz51d5UxtvnM+ICQQHcO1qor7jsM29EK9PTToA49ATseOl8OniCZihmhI3MueUFp8SPX0UDrmXgIyUJ8PVt9wue1MYaygc3d4KleB9mY3v8u/PEJ21aB9VpPjmgQG/6Cy40m9oODy5wSbE1edyTsF35x3yvcYg9PXUKX6NgJnNtSX3uxbwiZ1K6vomDRfCdOGA6kmyHgp2t69G/s+vXlDTs08xzufcuGXCmQ2I6YY8hqYw0Sze9n2k9ZTQ2YB5pyb8fvpua53ThrGv4PWygvQn0VhrDdyfMyVrKQ1dMJFFc+f9vIGV1REgPRQWKgGIo8DdhDTuMi7uQwwiNsc8hYD1iXBhqHToeH2JkawjmHeSP34suwb6RAnQs/Rw+BrFkNe0R1mHGjFE8jRqrzcb3HvRxCV8yx5Q2OxjlwwKYylKms3LXVZaxC96YdZeaHksZdyhrFA5Smmk4RsIJbYHW2B4UbWerLHkmwkW6ijBiLxOAF8R4sWpD3zzOckRfDyky8g3Czec3aJnk39sBXOthEHCJD16xvoE6OlG6M941HzGASFNBLtVofvOz8qKwMyekAWuaZj1A8eJuozUd8FXmZnyvuPtEqFKwvw5vlTyG1M+4hMNziljGczohrQl+PYHwIl1e38vSJ8N0Ra3vzwig67C57BcaCT5BCv/Xo96p75D9SfJUy3iACJQLQDjN4h6Gi1GLt5CATZsx7obWJWorOlVT1Zl0Q0vxhHKJWsqUXxUOkHiZrWDPP1QpI4NL+GIzvWQ8cgQurQFkI2uZ fjK2s8YD RFXPCDl5Qrr8pQzRofRrIp3g6DZmt4xiF89qMbT30uHerAZ39uA8tacW1QgfJarUzxyBSUV6e1Of9OcUUNq0ODL2w8mB/tFKrXYnOaztjh7MICao6Ezr5gwG0LCgtazz9AqVQ1vru9+9jYK9pEinMvEpm6lvUL8jLhsWP+RRCCSm/qcHgfkqRVCM1MnjyLITi36q3/tnkn2EWy9RHg7PZ/bstUWmwGimXaulj X-Bogosity: Ham, tests=bogofilter, spamicity=0.000004, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: From: Linke Li vma_len = (loff_t)(vma->vm_end - vma->vm_start); len = vma_len + ((loff_t)vma->vm_pgoff << PAGE_SHIFT); /* check for overflow */ if (len < vma_len) return -EINVAL; The existing code includes an integer overflow check, which indicates that the variable len has the potential to overflow, leading to undefined behavior according to the C standard. However, both GCC and Clang compilers may eliminate this overflow check based on the assumption that there will be no undefined behavior. Although the Linux kernel disables these optimizations by using the -fno-strict-overflow option, there is still a risk if the compilers make mistakes in the future. To address this potential issue, this patch introduces a new check that effectively prevents integer overflow. This check ensures the safe operation of the code even when the Linux kernel is compiled without the -fno-strict-overflow option, providing an added layer of protection against potential issues caused by compiler behavior. Signed-off-by: Linke Li --- fs/hugetlbfs/inode.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c index 7b17ccfa039d..1b4648a8e296 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c @@ -157,7 +157,7 @@ static int hugetlbfs_file_mmap(struct file *file, struct vm_area_struct *vma) vma_len = (loff_t)(vma->vm_end - vma->vm_start); len = vma_len + ((loff_t)vma->vm_pgoff << PAGE_SHIFT); /* check for overflow */ - if (len < vma_len) + if (vma_len > LLONG_MAX - ((loff_t)vma->vm_pgoff << PAGE_SHIFT)) return -EINVAL; inode_lock(inode);