From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1RvDOZ-0005PN-SP for mharc-grub-devel@gnu.org; Wed, 08 Feb 2012 14:41:35 -0500 Received: from eggs.gnu.org ([140.186.70.92]:51823) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RvDOR-0005LM-20 for grub-devel@gnu.org; Wed, 08 Feb 2012 14:41:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RvDOH-0007ik-It for grub-devel@gnu.org; Wed, 08 Feb 2012 14:41:26 -0500 Received: from mail-ww0-f49.google.com ([74.125.82.49]:39222) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RvDOG-0007ib-Ti for grub-devel@gnu.org; Wed, 08 Feb 2012 14:41:17 -0500 Received: by wgbdt13 with SMTP id dt13so697760wgb.30 for ; Wed, 08 Feb 2012 11:41:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=cRwvdoptmjJRHohuPvkaYlGAJhhhO5TpL72xZwVPSOA=; b=K/MHVOJ0KqU+e0s+arVdVnR1eZdl2SQRb7eK9wZZl3yQ4tvqUq5hsQR62ByAKOCaim ipbJIgi4rfAWISXxy6vTxNu/M+E+NqPOVBmBmy8A1kn/1ZGmjd3u9hNxsGWOWGpwEaAl ejYhf/unQmy3an7Wn3iY3NAbFbAuvaCDWSQSc= Received: by 10.180.90.225 with SMTP id bz1mr28717203wib.5.1328730075492; Wed, 08 Feb 2012 11:41:15 -0800 (PST) Received: from debian.x201.phnet (202-41.62-81.cust.bluewin.ch. [81.62.41.202]) by mx.google.com with ESMTPS id fl2sm2078481wib.1.2012.02.08.11.41.13 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 08 Feb 2012 11:41:14 -0800 (PST) Message-ID: <4F32CFD7.1050202@gmail.com> Date: Wed, 08 Feb 2012 20:41:11 +0100 From: =?UTF-8?B?VmxhZGltaXIgJ8+GLWNvZGVyL3BoY29kZXInIFNlcmJpbmVua28=?= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20120104 Icedove/8.0 MIME-Version: 1.0 To: The development of GNU GRUB Subject: Re: [PATCH V3 2/3] Add support for avoiding firmware in relocations References: <1328720102-4914-1-git-send-email-mjg@redhat.com> <1328720102-4914-2-git-send-email-mjg@redhat.com> In-Reply-To: <1328720102-4914-2-git-send-email-mjg@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 74.125.82.49 Cc: Matthew Garrett 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: Wed, 08 Feb 2012 19:41:32 -0000 On 08.02.2012 17:55, Matthew Garrett wrote: > EFI and OF both support firmware regions which may be in use during loading. > > +unsigned > +grub_relocator_firmware_overlaps (grub_phys_addr_t target, grub_size_t size) > +{ > + grub_efi_uintn_t mmapsize = 0, desc_size = 0; > + grub_efi_uint32_t descriptor_version = 0; > + grub_efi_memory_descriptor_t *descs = NULL; > + grub_efi_uintn_t key; > + int overlap = 0; > + grub_efi_memory_descriptor_t *desc; > + > + grub_efi_get_memory_map (&mmapsize, NULL,&key,&desc_size, > + &descriptor_version); You need to check return value. You don't use key. You can just make it NULL (grub_efi_get_memory_map handles it). > + descs = grub_malloc (mmapsize); > + if (!descs) > + return 0; > + You seem to lack error handling as whole. I'd suggest make this function return grub_err_t and generate a grub_error itself if overlap is detected. You current code would happily allocate anywhere if grub_malloc fails. > + grub_efi_get_memory_map (&mmapsize, descs,&key,&desc_size, > + &descriptor_version); > + > + > adjust_limits (rel,&min_addr,&max_addr, target, target); > > + if (avoid_firmware) > + { > +#if GRUB_RELOCATOR_HAVE_FIRMWARE_REQUESTS > + if (grub_relocator_firmware_overlaps(target, size)) > + > + return grub_error(GRUB_ERR_BAD_ARGUMENT, "target overlaps with firmware"); > +#endif > + } > + Ditto. Also here you have indentation problem -- Regards Vladimir 'φ-coder/phcoder' Serbinenko