From mboxrd@z Thu Jan 1 00:00:00 1970 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 03599C369D3 for ; Tue, 22 Apr 2025 13:15:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E11276B0005; Tue, 22 Apr 2025 09:15:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DC0546B0007; Tue, 22 Apr 2025 09:15:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C888C6B0008; Tue, 22 Apr 2025 09:15:03 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id AC69C6B0005 for ; Tue, 22 Apr 2025 09:15:03 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 51EB416160D for ; Tue, 22 Apr 2025 13:15:03 +0000 (UTC) X-FDA: 83361725286.24.E4D3B9A Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com [209.85.208.44]) by imf22.hostedemail.com (Postfix) with ESMTP id 7D46BC000A for ; Tue, 22 Apr 2025 13:15:01 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=YnABXRdu; spf=pass (imf22.hostedemail.com: domain of mykyta.yatsenko5@gmail.com designates 209.85.208.44 as permitted sender) smtp.mailfrom=mykyta.yatsenko5@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1745327701; 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=xvkW2QYEsSaLwERWuQdz+pmfthFFjasiuRXf1DERhYo=; b=rJtYBwcrXfP27c4hEPlLiLJSD3FCw9Nbecd+KvO2sFQiVyQYCfsd8X/7HByzuuFFssHSSg k11vhtM3Ym9yF1eePNOrXEfY7xkaJoAgfVr4dvOZOgcy9CwCdgxEDpkgOn9dEavSKvtqMb du1pK7JWtcI2aqYOo0OyIHGCFnCcfnA= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=YnABXRdu; spf=pass (imf22.hostedemail.com: domain of mykyta.yatsenko5@gmail.com designates 209.85.208.44 as permitted sender) smtp.mailfrom=mykyta.yatsenko5@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1745327701; a=rsa-sha256; cv=none; b=DuS0jDzLxedtXsR4H7FRX0NXbWuiV7zfySP2gk0r6I1C8hCTWzoQ2NRE4qYImF8VKYvh2s wqPAbG7JCfu8BD4VmWqpBER+3ezBwxcKFkaXvBPxqpcWUwGKOSXy7oLU2t4uwwH1I7Gjxi P5PXcgCJuXtIoQQI0ZYZSv7GyewiK14= Received: by mail-ed1-f44.google.com with SMTP id 4fb4d7f45d1cf-5e5c7d6b96fso8474618a12.3 for ; Tue, 22 Apr 2025 06:15:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745327700; x=1745932500; darn=kvack.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=xvkW2QYEsSaLwERWuQdz+pmfthFFjasiuRXf1DERhYo=; b=YnABXRduFgrsKN+7YIE1CJnefmWs/p/RepVhPe+8JICnrlJDXClxE69cGzDZDIMdQ2 QwC3OO/nUJUgs6KwJUvGoj6L65Yidb0J/QUA9Emo3q1G7XDa6Bv7EquSfuQnjZuYwVh+ w2L9YLQaMkC3zfdeTfg0fGRa+5HMWKzAHwoVjkcr+rcWg5JUm2/rfPJVkZq0YP21D1cx ZqIgBrcfEUclvDhYe8VsSrerzJ1TbZbdk1yIuaMlmcUhDs0mQL758+Q2f/36GXAwaF+I gKpq3w7x2VLFGDS2IEJPhnd1VXOSpi4hlOYTD+HaJeTWv1NdcvhS3goNABmWE4WmHaQ7 0MfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745327700; x=1745932500; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=xvkW2QYEsSaLwERWuQdz+pmfthFFjasiuRXf1DERhYo=; b=mkdjEbmr2484zZVhE+BjC/eZQAUeOXnfSTIxGIiZ07Nbslc9IclGd5CD6ZmnXELmOY ++CAbJ+Gv5AR/Z/iKMGWgu+WMSCOThbiAPa3GODt+RBJ/zul8M/SSTAhlIfY4qMqrPck JEWXdhEuufXtJ7WScL2pMEMLC95cHP3jpysNlzUPEdsmnR9F/YO0iRgdhRj52XmIqM3K t8IhoU7KCMDjFC2MiJntmEh0hXeZwR1oistv4a2aIj3TnI5QetCqcbswaNyfj0DcQVA1 3WZES3P+Wta8ALGvac0psuodjTXrQZU9xSkqZ/tpW7+AMRWuJV+baEvW/HF+pzW8ynng E9NA== X-Forwarded-Encrypted: i=1; AJvYcCWfH4JyOOn8mabqcfDpzp0IyabvLefAdf4CvlnPmRCP7ZwZwx0JABiVfTaCcT4gHPacbLN+Ap/Cnw==@kvack.org X-Gm-Message-State: AOJu0Yx8WJB+hvitUo4JBfM9aogJfO8afPBZLr5MyYAm7Z/Ke5M0702P ZwE0WCwb0XVTkP4Ql9VerPvHPmjzlRC3xDZK3A+yYVVwhU0D9Vgj X-Gm-Gg: ASbGncva/VJghOv62p9NHq2rdddvob5vYm/4nRwuXjpSMbp4N5aEo39sFacJmbt057f sk43DvwNUb1KekJmxlhRN9AIMV/GZIJZT6tjkO62J78f2BE3Po/gJNvgs5OA+0m6+/k8uAuWrKU RspztwRkFepGYf8DL1K7gA3RJ51Xlus5xInxoDOs3OnjVcSiHtN61yc5Ud9rLGtTThAwLmtwA0P B2GZB4q/X8kxwiORnwQkWaLd6b+tQSUpEBKwcvuVaAEXktFbBtJ3ybhDS5NimN87W5G18/C9BwQ oarujLtR0CyeTZV57v0mfuFdXIlwSqQpZJPN/ORItUHC75JLl2LlxBI= X-Google-Smtp-Source: AGHT+IF2m4DSYZeB1gfK1GHbKOzs1Wseci5l7jt886dSGFln60vGUq8pwcCfErNmrLsd8tCI+AupTA== X-Received: by 2002:a17:907:2d1f:b0:ac3:26ff:11a0 with SMTP id a640c23a62f3a-acb74dd05c6mr1456346866b.38.1745327699438; Tue, 22 Apr 2025 06:14:59 -0700 (PDT) Received: from msi-laptop.thefacebook.com ([2620:10d:c092:500::4:5298]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-acb6ef4799bsm659441366b.149.2025.04.22.06.14.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Apr 2025 06:14:59 -0700 (PDT) From: Mykyta Yatsenko To: akpm@linux-foundation.org, linux-mm@kvack.org, rostedt@goodmis.org, mhiramat@kernel.org, andrii@kernel.org, kernel-team@meta.com, linux-kernel@vger.kernel.org Cc: Mykyta Yatsenko Subject: [PATCH v2] maccess: fix strncpy_from_user_nofault empty string handling Date: Tue, 22 Apr 2025 14:14:49 +0100 Message-ID: <20250422131449.57177-1-mykyta.yatsenko5@gmail.com> X-Mailer: git-send-email 2.49.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Stat-Signature: k4o91tjg9pn6kx3otetcobifhf8tzea9 X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 7D46BC000A X-Rspam-User: X-HE-Tag: 1745327701-967534 X-HE-Meta: U2FsdGVkX1+UzPh9ShlmQdVZ3B8rpN+ibVZekSirXFjFsHntUV1F02kI+xVUzwRPY9vMElW7mHfDPz8P00skGo8WhZ+gmc38+Eq8oz9oJJxsCag6vC9n1CXn27JlxrAFp/dVD2B2nITjr0ITh7f7DG+L6ILpnERk7BhSN2pi3GgY7KpADQul/5pJcvBK+Ioljl0Bq9V63/VhnqP8wx87cRpnuprIU8hnV6TCi20GEPTwQKZn5MTtbMKZvvMGZ9w4aPk9RY2NbTXZeT3Sk9kFsZB7pA2QHMhz9KtUXtl1ThkCDH+wM3LhITNV2eMWQ68AFnW0VNzT5OQoV6wwJ6ekJcucKd5AbR9ODR8IWiNpGha7vh2sGuosex4qClC8iSJVmaGf8jqDFVDDcLgwUstjsxH9sltqNME4F4ForIvVGvCx0dZTpDdZGosWq6CanXVikSK4BpJ7W9a5Vhq0yZTbc/Ry7sU7eongM9TgNAEWzeLiDsT5M2EA5SXuedXj6kI1M41+8taggNKO8luamZPIGBxMCFVdK9+SCKSKLiOvQvYX/Z687Eh8/GwBIDo8L6+d/8z83nfVou/ywlyY5nTbKblxsbyYSvIfISujU68LjQ0Z6jYRXe4fYRBac4pRHnfr+rUrYoxy1kAW3CQTFF94urjGcoDGlug9iripDjh08+dmtr8s73EOOmlK/wOTHv1Wm5Oo90/hrvuyLjMJD2xX7Q7J9aXeRircXBY4kgJzHJCgGJUPpN6VfLRleaSTtc0Q2QBuKqmgQdK4aE2KDMrKjJ+wnasmrullaWDyqxbE7Bo9if2dX31ZpdDyzer6yc0WHc3T0CV8vtXJtmsNkfuZCBXJSwzaiEjMngne3cjUB3kta/fRXX+trEfarAIQ0JuBxFuIwhDfW8cPhig2FDeYtIxaNQGxgIjSX/rzAim8oQ1o4VyGy02YfPrgX1o6D+Bi3kwt4NonfkZe4/BjUKb zL1erNST icM9MsF6mZv6PH7DQcHcVhZjrtsVJ6v6swJoSV0q4JTKQmfV2617Bmzj5aS6ifxka1dD9Td5g/WazOYAIuyyJOklifucgMD1Q474URzQscANcyxtwR8yHMiMCx6iUm/VGcZDx3DWuzLEl61fwwNn/KulVd073YUZ6tiFJg6zNbdI2g6h3pz5kAIF5diYKyrkhWCrjMPPmu4/xKoPkTY+Caz/wKUv16aMj8wX60Gxt/DzfyBrkSZnWsYaZpPVz3UZNhuSYiY9B7zmhnijQUOIZkEUTh7Uc8EhqFyhup3ILCpHa2HJIDGqPAywOmYlJPFxmXqa77fpzK84AoCrrr2CsSbizBUzdate7d5MN3Xfbl1bwrKuk+LYNWnmhQC49Y+ak+Eg5mJ/7mEGqXL/L9Y+9FzsovjnbgB/uLsv8KnVbq5r/lni6Ue0mU9nHD5+gp5UyNsfgptFSG4OF6FgCDJmg4WyZ9QA7uixYzx4dutFtSfN4oIJql5eOc+FHFqvZGiqIUdb/k3XlVNFdoOlb3KUJrxCblg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: From: Mykyta Yatsenko strncpy_from_user_nofault should return the length of the copied string including the trailing NUL, but if the argument unsafe_addr points to an empty string ({'\0'}), the return value is 0. This happens as strncpy_from_user copies terminal symbol into dst and returns 0 (as expected), but strncpy_from_user_nofault does not modify ret as it is not equal to count and not greater than 0, so 0 is returned, which contradicts the contract. Signed-off-by: Mykyta Yatsenko --- mm/maccess.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/maccess.c b/mm/maccess.c index 8f0906180a94..831b4dd7296c 100644 --- a/mm/maccess.c +++ b/mm/maccess.c @@ -196,7 +196,7 @@ long strncpy_from_user_nofault(char *dst, const void __user *unsafe_addr, if (ret >= count) { ret = count; dst[ret - 1] = '\0'; - } else if (ret > 0) { + } else if (ret >= 0) { ret++; } -- 2.49.0