From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36611) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bmkgZ-0004K2-Ld for qemu-devel@nongnu.org; Wed, 21 Sep 2016 12:47:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bmkgV-0007ah-ID for qemu-devel@nongnu.org; Wed, 21 Sep 2016 12:47:50 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:34735) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bmkgV-0007aa-D7 for qemu-devel@nongnu.org; Wed, 21 Sep 2016 12:47:47 -0400 Received: by mail-wm0-f67.google.com with SMTP id l132so9587747wmf.1 for ; Wed, 21 Sep 2016 09:47:47 -0700 (PDT) Sender: Paolo Bonzini References: <1474465547-31638-1-git-send-email-ppandit@redhat.com> From: Paolo Bonzini Message-ID: <99c87ec2-40d3-3b7d-8e11-f2e90cc3a2ec@redhat.com> Date: Wed, 21 Sep 2016 18:46:44 +0200 MIME-Version: 1.0 In-Reply-To: <1474465547-31638-1-git-send-email-ppandit@redhat.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] net: mcf: check buffer descriptor length List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: P J P , Qemu Developers Cc: Jason Wang , Li Qiang , Prasad J Pandit On 21/09/2016 15:45, P J P wrote: > DPRINTF("tx_bd %x flags %04x len %d data %08x\n", > addr, bd.flags, bd.length, bd.data); > - if ((bd.flags & FEC_BD_R) == 0) { > + if (!bd.length || (bd.flags & FEC_BD_R) == 0) { > /* Run out of descriptors to transmit. */ > break; > } Is this a bug? I don't see anything problematic if len == 0 in the remainder of the code, though I see a bug: diff --git a/hw/net/mcf_fec.c b/hw/net/mcf_fec.c index 0ee8ad9..5a5fc69 100644 --- a/hw/net/mcf_fec.c +++ b/hw/net/mcf_fec.c @@ -176,7 +176,7 @@ static void mcf_fec_do_tx(mcf_fec_state *s) if (bd.flags & FEC_BD_L) { /* Last buffer in frame. */ DPRINTF("Sending packet\n"); - qemu_send_packet(qemu_get_queue(s->nic), frame, len); + qemu_send_packet(qemu_get_queue(s->nic), frame, frame_size); ptr = frame; frame_size = 0; s->eir |= FEC_INT_TXF; Paolo