From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1UR3dA-0004lN-Mf for mharc-grub-devel@gnu.org; Sat, 13 Apr 2013 12:48:48 -0400 Received: from eggs.gnu.org ([208.118.235.92]:40114) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UR3d4-0004kC-Oe for grub-devel@gnu.org; Sat, 13 Apr 2013 12:48:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UR3d2-0006nt-Bu for grub-devel@gnu.org; Sat, 13 Apr 2013 12:48:42 -0400 Received: from mail-ee0-f45.google.com ([74.125.83.45]:59698) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UR3d2-0006nd-52 for grub-devel@gnu.org; Sat, 13 Apr 2013 12:48:40 -0400 Received: by mail-ee0-f45.google.com with SMTP id c50so1712271eek.32 for ; Sat, 13 Apr 2013 09:48:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:message-id:date:from:user-agent:mime-version:to:cc :subject:references:in-reply-to:content-type :content-transfer-encoding; bh=rvmYXdP+QFvr+1+f9oJ8AJ2K4SHAoAdw9O+83ZCBYQQ=; b=uZ9YLm8CbygrYTfzTXxrxYbexl28BmKEJoX6wjahCWvQrUL9KyBcJdmJhdw4z04Kl7 q7wAVts9y0Efx8NTy4DXv+z2PLnkvqoSKorFB2XpRlGJsoBE5P25X1d0wcCNLu2FBtVu Y4ZfrYwRKhTfv9vJREX+W+BIqwzYpxcPDa1racNo+3/+XJ6BZby56vSNS3mfI7KA5VTZ QpALwhMX/wJjUmyj1WaQbH5Bn28kWWjJ7fZmmdt01UJ/e35EjOAfvsrFCPakAyOuIVvI 3nTK+vA9rxsvR+9Desvi+iFvb7lAqyuODQJn8QIbcsHu2lPactJTBZdsr9opHQxC15Ds tlKA== X-Received: by 10.14.210.132 with SMTP id u4mr41266996eeo.19.1365871718339; Sat, 13 Apr 2013 09:48:38 -0700 (PDT) Received: from [192.168.56.2] (adsl-ull-51-158.47-151.net24.it. [151.47.158.51]) by mx.google.com with ESMTPS id n48sm3707923eeg.12.2013.04.13.09.48.36 (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sat, 13 Apr 2013 09:48:37 -0700 (PDT) Message-ID: <51698C81.8050801@gmail.com> Date: Sat, 13 Apr 2013 18:49:05 +0200 From: Francesco Lavra User-Agent: Mozilla/5.0 (X11; Linux i686; rv:7.0.1) Gecko/20110929 Thunderbird/7.0.1 MIME-Version: 1.0 To: The development of GNU GRUB Subject: Re: [PATCH, RFT] ubootnet References: <5164A1EC.8000701@gmail.com> In-Reply-To: <5164A1EC.8000701@gmail.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 74.125.83.45 Cc: =?UTF-8?B?VmxhZGltaXIgJ8+GLWNvZGVyL3BoY29kZXInIFNlcmJpbmVua28=?= X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 13 Apr 2013 16:48:47 -0000 On 04/10/2013 01:19 AM, Vladimir 'φ-coder/phcoder' Serbinenko wrote: > On Raspberry pi u-boot doesn't support network. Could someone test this? I'm unable to test it, I just have a couple of minor comments. > --- grub-core/net/drivers/uboot/ubootnet.c 1970-01-01 00:00:00 +0000 > +++ grub-core/net/drivers/uboot/ubootnet.c 2013-04-09 22:28:48 +0000 [...] > +static struct grub_net_buff * > +get_card_packet (struct grub_net_card *dev) > +{ > + int rc; > + struct ubootnet_data *data = dev->data; > + grub_uint64_t start_time; > + struct grub_net_buff *nb; > + int actual; > + > + nb = grub_netbuff_alloc (dev->mtu + 64 + 2); > + if (!nb) > + { > + grub_netbuff_free (nb); This grub_netbuff_free() call is not needed. > +GRUB_MOD_INIT (ubootnet) > +{ > + int devcount, i; > + int nfound = 0; > + > + devcount = uboot_dev_enum (); > + > + for (i = 0; i < devcount; i++) > + { > + struct device_info *devinfo = uboot_dev_get (i); > + struct ubootnet_data *ubdata; > + struct grub_net_card *card; > + > + if (!(devinfo->type & DEV_TYP_NET)) > + continue; > + > + ubdata = grub_malloc (sizeof (struct ubootnet_data)); > + if (!ubdata) > + { > + grub_print_error (); > + return; > + } > + card = grub_zalloc (sizeof (struct grub_net_card)); > + if (!card) > + { > + grub_free (ubdata); > + grub_print_error (); > + return; > + } > + > + ubdata->handle = i; > + ubdata->cookie = devinfo->cookie; > + > + /* FIXME: Any way to check this? */ > + card->mtu = 1500; > + > + grub_memcpy (&(card->default_address.mac), &devinfo->di_net.hwaddr, 6); > + card->default_address.type = GRUB_NET_LINK_LEVEL_PROTOCOL_ETHERNET; > + > + card->txbufsize = ALIGN_UP (card->mtu, 64) + 256; > + card->txbuf = grub_zalloc (card->txbufsize); > + if (!card->txbuf) > + { > + grub_print_error (); > + continue; If this happens, there would be a memory leak since ubdata and card aren't freed. > + } > + > + card->data = ubdata; > + card->flags = 0; > + card->name = grub_xasprintf ("ubnet_%d", ++nfound); > + card->idle_poll_delay_ms = 10; > + > + card->driver = &ubootnet; > + grub_net_card_register (card); > + } > +} > + > +void > +grub_ubootdisk_fini (void) > +{ > + struct grub_net_card *card, *next; > + > + FOR_NET_CARDS_SAFE (card, next) > + if (card->driver && grub_strcmp (card->driver->name, "ubnet") == 0) > + grub_net_card_unregister (card); > +} card->txbuf, card->data and card itself should be freed as well. -- Francesco