From nobody Wed Feb 23 18:27:17 2022 X-Original-To: dev-commits-src-main@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 601E519C9884; Wed, 23 Feb 2022 18:27:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (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 "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4K3kz92G9Kz3P8C; Wed, 23 Feb 2022 18:27:17 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1645640837; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Gurztm84garQrY3+J14Th0KX9uuwv1Ctq/6P9eO7pbU=; b=MNGK/kyQXaNWfCDWOnIyo6zW/p3Eoqw0rrD40DaauOI3FA4wXGisFS4gxhPeQ6tzA2QDqR dmEcpiYZ9fSDDD09Ig2TN/eHLrqJ3TJTLNsxM9Mv1htYSFE5uE1WkxLrIjWPwGv+ubDIX+ /TA17nJNTlZcV1+HtV/L9YSbtV0G7BERG2NorDmscCkyAZIk7jtJc3cSfmyM/LEtgKKutM 449i/RbUIRhQ1xy46YAVJw9nnLOuETrHPsjh//wR7x/KRMgT4+THiS7Sp8X7hVXt64TkmU uOUCzAEDWjzAx7jIB6drlX5Yum6To8GufUU3BbO7rDNNnM1qBzDzeh01JmmhVA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2D56A1D199; Wed, 23 Feb 2022 18:27:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 21NIRHH4042879; Wed, 23 Feb 2022 18:27:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 21NIRH6m042878; Wed, 23 Feb 2022 18:27:17 GMT (envelope-from git) Date: Wed, 23 Feb 2022 18:27:17 GMT Message-Id: <202202231827.21NIRH6m042878@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Gleb Smirnoff Subject: git: d2b3a0ed31ef - main - sendto: don't clear transient errors for atomic protocols List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d2b3a0ed31ef6270c712d0779a95bb222df88909 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1645640837; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Gurztm84garQrY3+J14Th0KX9uuwv1Ctq/6P9eO7pbU=; b=AUFMyEZ2A7Z5tBn8BIEoxk/5HISmrfMmQUGk495loNVGz7eSx5RR0Ll+qghjPsHK6UQva3 G624k3oc37VsoGwYadDCsuMCcF+T715ubQdP1d29UF7+1CZt5pIN/LOD790PwtkHKj/tJm y3b5MvE9vAGkx8hKs2Ru1UwbC2fSQoxfumo+coJhTqLdlnPeUbZ1mT+2NdRhaSA1wm4vfS f5PhpF47zU+4KosFzIzgAqCOFOpTe1hoMNKRh++Ps6VbSGeT7ghB0N/5c6qmFxkU7N2gOh P95ZDMMo4vq6TOWSMFWiE3c0M+FZdpD6DV5XNrF/nnqIgjlmPXXQRtuy32L7Ew== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1645640837; a=rsa-sha256; cv=none; b=VXsmN0FYeCA2qsZiCzeWoN5sG+eRVVBb1NfNMZtQ0G+ooCZC2AWp4jJPEouDqNSTB4b0Il QuIy3DQMys4XCmPyLLOk5gPzv5D/ZBrEKlVHjepwOAqgMmqyg0vs0zatQjzakh44HTRSrt MDu/RF4V6v9R+YC+bJ4YIecR0KgnKVu3oIIn1uZ9d3XOLHJ5990aiJUIC1Ls8hrlQ8gWQK op/hCgTJUxYP3BZjcAqd3YN7M5/3cszCnGe148QL8hhiOteFFt0qX3dD1k/NzwpsB8qeuP dk0CaihYm1xC6usjuKGD3K/VjyZF16KHTJfdDO4zUu/XNSbeqQPmJdfdTOLG0g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=d2b3a0ed31ef6270c712d0779a95bb222df88909 commit d2b3a0ed31ef6270c712d0779a95bb222df88909 Author: Gleb Smirnoff AuthorDate: 2022-02-17 17:07:31 +0000 Commit: Gleb Smirnoff CommitDate: 2022-02-23 18:24:14 +0000 sendto: don't clear transient errors for atomic protocols The changeset 65572cade35 uncovered the fact that top layer of sendto(2) would clear a transient error code if some data was copied out of uio. The clearing of the error makes sense for non-atomic protocols, since they have sent some data. The atomic protocols send all or nothing. The current implementation of unix/dgram uses sosend_generic(), which would always copyout and only then it may fail to deliver a message. The sosend_dgram(), currently used by UDP only, also has same behavior. Reported by: pho Reviewed by: pho, markj Differential revision: https://reviews.freebsd.org/D34309 --- sys/kern/uipc_syscalls.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c index 766c68b35cfe..72336d31071c 100644 --- a/sys/kern/uipc_syscalls.c +++ b/sys/kern/uipc_syscalls.c @@ -785,8 +785,10 @@ kern_sendit(struct thread *td, int s, struct msghdr *mp, int flags, len = auio.uio_resid; error = sosend(so, mp->msg_name, &auio, 0, control, flags, td); if (error != 0) { - if (auio.uio_resid != len && (error == ERESTART || - error == EINTR || error == EWOULDBLOCK)) + if (auio.uio_resid != len && + (so->so_proto->pr_flags & PR_ATOMIC) == 0 && + (error == ERESTART || error == EINTR || + error == EWOULDBLOCK)) error = 0; /* Generation of SIGPIPE can be controlled per socket */ if (error == EPIPE && !(so->so_options & SO_NOSIGPIPE) &&