svn commit: r299098 - head/sys/boot/efi/libefi
Conrad E. Meyer
cem at FreeBSD.org
Thu May 5 00:07:10 UTC 2016
Author: cem
Date: Thu May 5 00:07:08 2016
New Revision: 299098
URL: https://svnweb.freebsd.org/changeset/base/299098
Log:
efipart: Support an arbitrary number of partitions
Don't crash if the user has more than 31 of them. A follow-up to
r298230.
Reviewed by: allanjude
Relnotes: maybe
Sponsored by: EMC / Isilon Storage Division
Differential Revision: https://reviews.freebsd.org/D6212
Modified:
head/sys/boot/efi/libefi/efipart.c
Modified: head/sys/boot/efi/libefi/efipart.c
==============================================================================
--- head/sys/boot/efi/libefi/efipart.c Wed May 4 23:38:27 2016 (r299097)
+++ head/sys/boot/efi/libefi/efipart.c Thu May 5 00:07:08 2016 (r299098)
@@ -65,14 +65,12 @@ struct devsw efipart_dev = {
/*
* info structure to support bcache
*/
-#define MAXPDDEV 31 /* see MAXDEV in libi386.h */
-
-static struct pdinfo
-{
+struct pdinfo {
int pd_unit; /* unit number */
int pd_open; /* reference counter */
void *pd_bcache; /* buffer cache data */
-} pdinfo [MAXPDDEV];
+};
+static struct pdinfo *pdinfo;
static int npdinfo = 0;
#define PD(dev) (pdinfo[(dev)->d_unit])
@@ -109,6 +107,9 @@ efipart_init(void)
nout = 0;
bzero(aliases, nin * sizeof(EFI_HANDLE));
+ pdinfo = malloc(nin * sizeof(*pdinfo));
+ if (pdinfo == NULL)
+ return (ENOMEM);
for (n = 0; n < nin; n++) {
status = BS->HandleProtocol(hin[n], &devpath_guid,
More information about the svn-src-all
mailing list