Module Name: src
Committed By: dholland
Date: Wed Jul 3 18:40:33 UTC 2019
Modified Files:
src/lib/libisns: isns_thread.c
Log Message:
Fix up mangled logic, hopefully. PR 54323 from David Binderman.
XXX: This code is pretty dodgy in general and would benefit from a
XXX: workover by someone who knows what it's supposed to be doing.
XXX: E.g. it appears that a read error will cause an infinite loop...
To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1 -r1.2 src/lib/libisns/isns_thread.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/libisns/isns_thread.c
diff -u src/lib/libisns/isns_thread.c:1.1.1.1 src/lib/libisns/isns_thread.c:1.2
--- src/lib/libisns/isns_thread.c:1.1.1.1 Sun Jan 16 01:22:50 2011
+++ src/lib/libisns/isns_thread.c Wed Jul 3 18:40:33 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: isns_thread.c,v 1.1.1.1 2011/01/16 01:22:50 agc Exp $ */
+/* $NetBSD: isns_thread.c,v 1.2 2019/07/03 18:40:33 dholland Exp $ */
/*-
* Copyright (c) 2004,2009 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: isns_thread.c,v 1.1.1.1 2011/01/16 01:22:50 agc Exp $");
+__RCSID("$NetBSD: isns_thread.c,v 1.2 2019/07/03 18:40:33 dholland Exp $");
/*
@@ -152,12 +152,16 @@ isns_kevent_pipe(struct kevent* evt_p, s
DBG("isns_kevent_pipe: ISNS_CMD_ABORT_TRANS\n");
rbytes = read(cfg_p->pipe_fds[0], &trans_id,
sizeof(trans_id));
- if ((rbytes < 0) && (rbytes == sizeof(trans_id)))
- isns_abort_trans(cfg_p, trans_id);
- else
+ if (rbytes < 0)
DBG("isns_kevent_pipe: "
"error reading trans id\n");
- pipe_nbytes -= (int)rbytes;
+ else if (rbytes != sizeof(trans_id))
+ DBG("isns_kevent_pipe: "
+ "short read reading trans id\n");
+ else {
+ isns_abort_trans(cfg_p, trans_id);
+ pipe_nbytes -= (int)rbytes;
+ }
break;
case ISNS_CMD_STOP: