[Qemu-devel] [PATCH v2 0/2] slirp: handle errors in sosendoob()

Peter Maydell posted 2 patches 6 years, 9 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/1500030745-10619-1-git-send-email-peter.maydell@linaro.org
Test FreeBSD passed
Test checkpatch failed
Test docker passed
Test s390x passed
slirp/sbuf.c   |  2 +-
slirp/socket.c | 52 +++++++++++++++++++++++++++++++++++-----------------
2 files changed, 36 insertions(+), 18 deletions(-)
[Qemu-devel] [PATCH v2 0/2] slirp: handle errors in sosendoob()
Posted by Peter Maydell 6 years, 9 months ago
At the moment the slirp sosendoob() function doesn't properly
handle errors from slirp_send(), and its callers don't do
anything with its return value either. (Coverity spots the
latter as CID 1005633.)

This patchset attempts to fix that. In the first patch we
fix sosendoob() itself so that we return errors to the caller
and treat short writes as reducing the amount of urgent data
to be sent. In the second patch we make the call in sowrite()
treat any return form sosendoob() which didn't transfer all
the urgent data as a "disconnect the socket" error in the
same way that it already handles errors for writes of
non-urgent data. The call to sosendoob() in sbappend() can
safely ignore any failures as in this case sowrite() will be
called shortly and will deal with them.

Coding style: I've opted to stick with the tab-indent
that the slirp code uses rather than reindent to QEMU standard.
Happy to go the other way if the maintainer prefers.

Changes v1->v2:
 * since sosendoob() updates so->so_urgc, we need to
   capture the old value to check that the write has
   actually written what it is supposed to.

thanks
-- PMM

Peter Maydell (2):
  slirp: Handle error returns from slirp_send() in sosendoob()
  slirp: Handle error returns from sosendoob()

 slirp/sbuf.c   |  2 +-
 slirp/socket.c | 52 +++++++++++++++++++++++++++++++++++-----------------
 2 files changed, 36 insertions(+), 18 deletions(-)

-- 
2.7.4


Re: [Qemu-devel] [PATCH v2 0/2] slirp: handle errors in sosendoob()
Posted by no-reply@patchew.org 6 years, 9 months ago
Hi,

This series seems to have some coding style problems. See output below for
more information:

Type: series
Message-id: 1500030745-10619-1-git-send-email-peter.maydell@linaro.org
Subject: [Qemu-devel] [PATCH v2 0/2] slirp: handle errors in sosendoob()

=== TEST SCRIPT BEGIN ===
#!/bin/bash

BASE=base
n=1
total=$(git log --oneline $BASE.. | wc -l)
failed=0

git config --local diff.renamelimit 0
git config --local diff.renames True

commits="$(git log --format=%H --reverse $BASE..)"
for c in $commits; do
    echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..."
    if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then
        failed=1
        echo
    fi
    n=$((n+1))
done

exit $failed
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
From https://github.com/patchew-project/qemu
 - [tag update]      patchew/1500029487-14822-1-git-send-email-peter.maydell@linaro.org -> patchew/1500029487-14822-1-git-send-email-peter.maydell@linaro.org
 * [new tag]         patchew/1500048838-16802-1-git-send-email-clg@kaod.org -> patchew/1500048838-16802-1-git-send-email-clg@kaod.org
Switched to a new branch 'test'
9cb97f6 slirp: Handle error returns from sosendoob()
4b27372 slirp: Handle error returns from slirp_send() in sosendoob()

=== OUTPUT BEGIN ===
Checking PATCH 1/2: slirp: Handle error returns from slirp_send() in sosendoob()...
ERROR: code indent should never use tabs
#35: FILE: slirp/socket.c:354:
+^I^Iuint32_t urgc = so->so_urgc;$

ERROR: code indent should never use tabs
#38: FILE: slirp/socket.c:356:
+^I^Iif (len > urgc) {$

ERROR: code indent should never use tabs
#39: FILE: slirp/socket.c:357:
+^I^I^Ilen = urgc;$

ERROR: code indent should never use tabs
#40: FILE: slirp/socket.c:358:
+^I^I}$

ERROR: code indent should never use tabs
#44: FILE: slirp/socket.c:360:
+^I^Iurgc -= len;$

ERROR: code indent should never use tabs
#45: FILE: slirp/socket.c:361:
+^I^Iif (urgc) {$

ERROR: code indent should never use tabs
#48: FILE: slirp/socket.c:363:
+^I^I^Iif (n > urgc) {$

ERROR: code indent should never use tabs
#49: FILE: slirp/socket.c:364:
+^I^I^I^In = urgc;$

ERROR: code indent should never use tabs
#50: FILE: slirp/socket.c:365:
+^I^I^I}$

ERROR: code indent should never use tabs
#56: FILE: slirp/socket.c:370:
+^I}$

ERROR: code indent should never use tabs
#61: FILE: slirp/socket.c:373:
+^Iif (n != len) {$

ERROR: code indent should never use tabs
#62: FILE: slirp/socket.c:374:
+^I^IDEBUG_ERROR((dfd, "Didn't send all data urgently XXXXX\n"));$

ERROR: code indent should never use tabs
#63: FILE: slirp/socket.c:375:
+^I}$

ERROR: code indent should never use tabs
#66: FILE: slirp/socket.c:377:
+^Iif (n < 0) {$

ERROR: code indent should never use tabs
#67: FILE: slirp/socket.c:378:
+^I^Ireturn n;$

ERROR: code indent should never use tabs
#69: FILE: slirp/socket.c:380:
+^Iso->so_urgc -= n;$

ERROR: line over 90 characters
#70: FILE: slirp/socket.c:381:
+	DEBUG_MISC((dfd, " ---2 sent %d bytes urgent data, %d urgent bytes left\n", n, so->so_urgc));

ERROR: code indent should never use tabs
#70: FILE: slirp/socket.c:381:
+^IDEBUG_MISC((dfd, " ---2 sent %d bytes urgent data, %d urgent bytes left\n", n, so->so_urgc));$

total: 18 errors, 0 warnings, 51 lines checked

Your patch has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

Checking PATCH 2/2: slirp: Handle error returns from sosendoob()...
ERROR: code indent should never use tabs
#26: FILE: slirp/sbuf.c:94:
+^I^I(void)sosendoob(so);$

ERROR: code indent should never use tabs
#39: FILE: slirp/socket.c:407:
+^I^Iuint32_t expected = so->so_urgc;$

ERROR: code indent should never use tabs
#40: FILE: slirp/socket.c:408:
+^I^Iif (sosendoob(so) < expected) {$

ERROR: code indent should never use tabs
#41: FILE: slirp/socket.c:409:
+^I^I^I/* Treat a short write as a fatal error too,$

ERROR: code indent should never use tabs
#42: FILE: slirp/socket.c:410:
+^I^I^I * rather than continuing on and sending the urgent$

ERROR: code indent should never use tabs
#43: FILE: slirp/socket.c:411:
+^I^I^I * data as if it were non-urgent and leaving the$

ERROR: code indent should never use tabs
#44: FILE: slirp/socket.c:412:
+^I^I^I * so_urgc count wrong.$

ERROR: code indent should never use tabs
#45: FILE: slirp/socket.c:413:
+^I^I^I */$

ERROR: code indent should never use tabs
#46: FILE: slirp/socket.c:414:
+^I^I^Igoto err_disconnected;$

ERROR: code indent should never use tabs
#47: FILE: slirp/socket.c:415:
+^I^I}$

ERROR: code indent should never use tabs
#60: FILE: slirp/socket.c:459:
+^I^Igoto err_disconnected;$

WARNING: line over 80 characters
#70: FILE: slirp/socket.c:488:
+	DEBUG_MISC((dfd, " --- sowrite disconnected, so->so_state = %x, errno = %d\n",

ERROR: code indent should never use tabs
#70: FILE: slirp/socket.c:488:
+^IDEBUG_MISC((dfd, " --- sowrite disconnected, so->so_state = %x, errno = %d\n",$

ERROR: code indent should never use tabs
#71: FILE: slirp/socket.c:489:
+^I^I    so->so_state, errno));$

ERROR: code indent should never use tabs
#72: FILE: slirp/socket.c:490:
+^Isofcantsendmore(so);$

ERROR: code indent should never use tabs
#73: FILE: slirp/socket.c:491:
+^Itcp_sockclosed(sototcpcb(so));$

ERROR: code indent should never use tabs
#74: FILE: slirp/socket.c:492:
+^Ireturn -1;$

total: 16 errors, 1 warnings, 49 lines checked

Your patch has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

=== OUTPUT END ===

Test command exited with code: 1


---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org