From owner-p4-projects@FreeBSD.ORG Tue Jan 15 19:44:21 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C375616A419; Tue, 15 Jan 2008 19:44:20 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8871016A417 for ; Tue, 15 Jan 2008 19:44:20 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 6AF6913C4E5 for ; Tue, 15 Jan 2008 19:44:20 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id m0FJiKMD094919 for ; Tue, 15 Jan 2008 19:44:20 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id m0FJiKe1094914 for perforce@freebsd.org; Tue, 15 Jan 2008 19:44:20 GMT (envelope-from hselasky@FreeBSD.org) Date: Tue, 15 Jan 2008 19:44:20 GMT Message-Id: <200801151944.m0FJiKe1094914@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 133340 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jan 2008 19:44:21 -0000 http://perforce.freebsd.org/chv.cgi?CH=133340 Change 133340 by hselasky@hselasky_laptop001 on 2008/01/15 19:43:41 Try to work around some compiler warnings "xfer[2] and xfer[3] might be used uninitialized" which is not the case on FreeBSD 7.0-RC1. Reported by "Stefan Lambrev". Affected files ... .. //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#104 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#104 (text+ko) ==== @@ -2110,31 +2110,33 @@ repeat: xfer[0] = LIST_FIRST(&(info->done_head)); if (xfer[0]) { + do { LIST_REMOVE(xfer[0], done_list); xfer[0]->done_list.le_prev = NULL; xfer[1] = LIST_FIRST(&(info->done_head)); if (xfer[1] == NULL) { dropcount = 1; - goto lockchange_0; + break; } LIST_REMOVE(xfer[1], done_list); xfer[1]->done_list.le_prev = NULL; xfer[2] = LIST_FIRST(&(info->done_head)); if (xfer[2] == NULL) { dropcount = 2; - goto lockchange_0; + break; } LIST_REMOVE(xfer[2], done_list); xfer[2]->done_list.le_prev = NULL; xfer[3] = LIST_FIRST(&(info->done_head)); if (xfer[3] == NULL) { dropcount = 3; - goto lockchange_0; + break; } LIST_REMOVE(xfer[3], done_list); xfer[3]->done_list.le_prev = NULL; dropcount = 4; -lockchange_0: + } while (0); + mtx_unlock(info->usb_mtx); /* @@ -2144,20 +2146,18 @@ mtx_lock(info->priv_mtx); /* call callback(s) */ + switch (dropcount) { + case 4: + usbd_callback_wrapper(xfer[3], info, USBD_CONTEXT_CALLBACK); + case 3: + usbd_callback_wrapper(xfer[2], info, USBD_CONTEXT_CALLBACK); + case 2: + usbd_callback_wrapper(xfer[1], info, USBD_CONTEXT_CALLBACK); + case 1: usbd_callback_wrapper(xfer[0], info, USBD_CONTEXT_CALLBACK); - if (xfer[1] == NULL) { - goto lockchange_1; - } - usbd_callback_wrapper(xfer[1], info, USBD_CONTEXT_CALLBACK); - if (xfer[2] == NULL) { - goto lockchange_1; - } - usbd_callback_wrapper(xfer[2], info, USBD_CONTEXT_CALLBACK); - if (xfer[3] == NULL) { - goto lockchange_1; + default: + break; } - usbd_callback_wrapper(xfer[3], info, USBD_CONTEXT_CALLBACK); -lockchange_1: mtx_unlock(info->priv_mtx); mtx_lock(info->usb_mtx);