From nobody Wed Jul 8 19:36:44 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4gwSyl0fYLz6klKq; Wed, 08 Jul 2026 19:36:47 +0000 (UTC) (envelope-from markj@freebsd.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gwSyl00cSz4QDg; Wed, 08 Jul 2026 19:36:47 +0000 (UTC) (envelope-from markj@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1783539407; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=TvPeyZrVG2KimPtHRbsJy+y9cR1KY/0X+REKctjaafc=; b=h5Zwujm2QZs4MjPbqbBmvItlM/bGmqWTTndgkYaeGWTlCpK6UfDVFDBOPhdEM8lHKYKUeP AAd5Zc5kC4rrO9p40rY67T5LLZ0sOE4T6qTFcQEnHhznwukVelv/Qgy6qq5AxSRtyJyneo mnwuJxxrfHHzjShB9KozyClKiticE9Irn3IY3/5fRmTHBnLE+1UmmY6K5E4miZ13ttRl/t kRQanWPxB3M3b0BCEnJTrnjrmagInQaX+GHGKI1Y20EX3NZnYpswt8WS4bFjvk1TEsxZrN 9vnclQbkbwOAdbXk2/bulVIsEGADz80NWMCfTccZX0qYZ/3cBQK1D5Se/t3XoQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1783539407; a=rsa-sha256; cv=none; b=RqAj7OxUrAmoPRNzAFkyppD7pm9pBoIeV5pXZy8xjEeW/9oFaRXniGlNEd6m4SX+54VXfu 1GA9BK/dQY0J5LMMF4W49CFsPLNgotREGwJaeNQ0o/361LRlbXI7L3reltrh9SnuJyA8fW AsjfE07Qix9sSp/jsgJrJ547VWMJC23DN6LmZ1YyGQBBDtb1IOmtk4NS60tcyx9jSeFpNK TSaOP/GD2B541cf1+6sLEW9hto+3YwINnRTkrktKKRvv5LQEB6OU6WkFLboQUaqgC3kFWV rqTdJpDPO+4ocoWN076FOq2jplzYnVefTp91EFLqwf1n8KNUfQpMOFpvggPg4Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1783539407; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=TvPeyZrVG2KimPtHRbsJy+y9cR1KY/0X+REKctjaafc=; b=ZXwFQ0ee0ZpEUSYTbZRKSWf5v7NJdkobMCcU5Fxx5NzhEwNE3Rgov6iItTb8ZwQgL0OueA ZKDYBlluRzyOsmigOW5z12yNhK4iE8ZlHuwFrl07n1IBV1+HCllmQnxwzpIirFyiqWY+c7 sOHwrHOgFQ2/68WB8Tb9GM3QWECe4glkMESQk8NWmW55s4TLHCs/RD7/VJz1fkUsODZ68j 0d91pmr2g2ggotgMp+3GTfTnmkCd8Iy/D1cBOldO9h55g/Z0/qiKmduD1q34xPgJb5pXVI CMvixTv/IYVV7UupLzHUGwCzbW8Xlj/xF6TG75xr1C1V3bIvwSQMMq5BQgeKjA== Received: from nuc (192-0-220-237.cpe.teksavvy.com [192.0.220.237]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: markj) by smtp.freebsd.org (Postfix) with ESMTPSA id 4gwSyk4JPBzyrf; Wed, 08 Jul 2026 19:36:46 +0000 (UTC) (envelope-from markj@freebsd.org) Date: Wed, 8 Jul 2026 15:36:44 -0400 From: Mark Johnston To: Konstantin Belousov Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: dfad790c8cca - main - sendfile: stop abusing kern_writev() Message-ID: References: <6a4d73f7.1e7dd.1cbcbd60@gitrepo.freebsd.org> List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: On Wed, Jul 08, 2026 at 10:23:06PM +0300, Konstantin Belousov wrote: > On Wed, Jul 08, 2026 at 02:59:47PM -0400, Mark Johnston wrote: > > On Tue, Jul 07, 2026 at 09:47:35PM +0000, Konstantin Belousov wrote: > > > if (error != 0) > > > goto out; > > > + if (trl_uio->uio_rw != UIO_WRITE) { > > > > cloneuio() does not set uio_rw. sendfile() was relying on kern_writev() > > to do that. A GENERIC-KMSAN kernel panics when running the test suite: > > > > panic: MSan: Uninitialized malloc memory from copyinuio+0x11d > > cpuid = 5 > > time = 1783537112 > > KDB: stack backtrace: > > db_trace_self_wrapper() at db_trace_self_wrapper+0xa7/frame 0xfffffe00764d7840 > > vpanic() at vpanic+0x538/frame 0xfffffe00764d79c0 > > panic() at panic+0x1dd/frame 0xfffffe00764d7ad0 > > __msan_warning() at __msan_warning+0x25d/frame 0xfffffe00764d7c20 > > sendfile() at sendfile+0xcb6/frame 0xfffffe00764d7d50 > > amd64_syscall() at amd64_syscall+0x837/frame 0xfffffe00764d7f30 > > fast_syscall_common() at fast_syscall_common+0xf8/frame 0xfffffe00764d7f30 > > --- syscall (393, FreeBSD ELF64, sendfile), rip = 0x21aad2ea3b0a, rsp = 0x21aad1d706c8, rbp = 0x21aad1d70760 --- > > KDB: enter: panic > > The following should be enough, am I correct? I am re-running the test suite to see. I am also not sure about the offset. dofilewrite() sets auio->uio_offset = offset. kern_filewrite() takes an offset parameter and does nothing with it. copyinuio() initializes it to -1, so KMSAN will not report a problem, but it looks wrong to me. > commit 4152c4b88947d087a8fcb48a67d4dfddcdd60b31 > Author: Konstantin Belousov > Date: Wed Jul 8 22:21:00 2026 +0300 > > sendfile(): for trailers uio, set uio_rw to UIO_WRITE instead of checking it > > Reported by: markj > Fixes: dfad790c8cca ("sendfile: stop abusing kern_writev()") > > diff --git a/sys/kern/kern_sendfile.c b/sys/kern/kern_sendfile.c > index 1a534210ca0c..fb6d2da201ef 100644 > --- a/sys/kern/kern_sendfile.c > +++ b/sys/kern/kern_sendfile.c > @@ -1256,10 +1256,7 @@ sendfile(struct thread *td, struct sendfile_args *uap, int compat) > &trl_uio); > if (error != 0) > goto out; > - if (trl_uio->uio_rw != UIO_WRITE) { > - error = EINVAL; > - goto out; > - } > + trl_uio->uio_rw = UIO_WRITE; > trl_uio->uio_td = td; > } > } >