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: