From 8dd33d93f9af1ed19c735e24ffae7dca8931abad Mon Sep 17 00:00:00 2001 From: CentOS Buildsys Date: Apr 30 2013 14:07:03 +0000 Subject: import efibootmgr-0.5.4-15.el7.src.rpm --- diff --git a/.efibootmgr.metadata b/.efibootmgr.metadata new file mode 100644 index 0000000..5988942 --- /dev/null +++ b/.efibootmgr.metadata @@ -0,0 +1 @@ +eebdb671638f3a7901690df2a8f647e7f8666ed2 SOURCES/efibootmgr-0.5.4.tar.gz diff --git a/README.md b/README.md deleted file mode 100644 index 0e7897f..0000000 --- a/README.md +++ /dev/null @@ -1,5 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 - -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/efibootmgr-0.5.4-Remove-device-path-padding-on-non-Itanium.patch b/SOURCES/efibootmgr-0.5.4-Remove-device-path-padding-on-non-Itanium.patch new file mode 100644 index 0000000..240aa69 --- /dev/null +++ b/SOURCES/efibootmgr-0.5.4-Remove-device-path-padding-on-non-Itanium.patch @@ -0,0 +1,28 @@ +From 2d8f962284f40b918c0fc8385e58fcba219ddc12 Mon Sep 17 00:00:00 2001 +From: Fedora Ninjas +Date: Wed, 28 Nov 2012 17:13:24 -0500 +Subject: [PATCH 2/5] Remove device path padding on non-Itanium + +This code predates EFI support on any x86 hardware, and it's a strict +violation of the specification. Windows doesn't do it either. +--- + src/include/efi.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/include/efi.h b/src/include/efi.h +index be667ae..c2ac853 100644 +--- a/src/include/efi.h ++++ b/src/include/efi.h +@@ -294,7 +294,9 @@ typedef struct { + uint8_t signature[16]; + uint8_t mbr_type; + uint8_t signature_type; ++#ifdef __ia64 + uint8_t padding[6]; /* Emperically needed */ ++#endif + } __attribute__((packed)) HARDDRIVE_DEVICE_PATH; + + typedef struct { +-- +1.8.0 + diff --git a/SOURCES/efibootmgr-0.5.4-Work-around-broken-Apple-firmware.patch b/SOURCES/efibootmgr-0.5.4-Work-around-broken-Apple-firmware.patch new file mode 100644 index 0000000..a1d9831 --- /dev/null +++ b/SOURCES/efibootmgr-0.5.4-Work-around-broken-Apple-firmware.patch @@ -0,0 +1,30 @@ +From 6edc3ed5479b575f87eb51e335957b05fdd04fe8 Mon Sep 17 00:00:00 2001 +From: Fedora Ninjas +Date: Wed, 28 Nov 2012 16:49:18 -0500 +Subject: [PATCH 1/5] Work around broken Apple firmware + +Alex Murray found that Apple's firmware sets an invalid EFI attribute on +BootCurrent, which newer versions of the kernel then reject. This patch +from him simply masks off the extraneous bit. +--- + src/lib/efivars_sysfs.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/lib/efivars_sysfs.c b/src/lib/efivars_sysfs.c +index 182c70f..ea87325 100644 +--- a/src/lib/efivars_sysfs.c ++++ b/src/lib/efivars_sysfs.c +@@ -55,6 +55,10 @@ sysfs_read_variable(const char *name, efi_variable_t *var) + return EFI_INVALID_PARAMETER; + } + close(fd); ++ /* latest apple firmware sets high bit which appears invalid ++ to the linux kernel if we write it back so lets zero it out ++ if it is set since it would be invalid to set it anyway */ ++ var->Attributes = var->Attributes & ~(1 << 31); + return var->Status; + } + +-- +1.8.0 + diff --git a/SOURCES/efibootmgr-0.5.4-default-to-grub.patch b/SOURCES/efibootmgr-0.5.4-default-to-grub.patch new file mode 100644 index 0000000..5e8525b --- /dev/null +++ b/SOURCES/efibootmgr-0.5.4-default-to-grub.patch @@ -0,0 +1,44 @@ +From 836e58668167e82c5ffcb66f3f390d2c52217f6a Mon Sep 17 00:00:00 2001 +From: Peter Jones +Date: Wed, 14 Apr 2010 16:06:48 -0400 +Subject: [PATCH] Make \EFI\redhat\grub.efi the default bootloader (#579665) + +Make \EFI\redhat\grub.efi the default bootloader instead of \elilo.efi . +--- + src/efibootmgr/efibootmgr.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/efibootmgr/efibootmgr.c b/src/efibootmgr/efibootmgr.c +index 5db0d9e..b984143 100644 +--- a/src/efibootmgr/efibootmgr.c ++++ b/src/efibootmgr/efibootmgr.c +@@ -18,7 +18,7 @@ + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +- This must tie the EFI_DEVICE_PATH to /boot/efi/elilo.efi ++ This must tie the EFI_DEVICE_PATH to /boot/efi/EFI/redhat/grub.efi + The EFI_DEVICE_PATH will look something like: + ACPI device path, length 12 bytes + Hardware Device Path, PCI, length 6 bytes +@@ -779,7 +779,7 @@ usage() + printf("\t-g | --gpt force disk with invalid PMBR to be treated as GPT\n"); + printf("\t-H | --acpi_hid XXXX set the ACPI HID (used with -i)\n"); + printf("\t-i | --iface name create a netboot entry for the named interface\n"); +- printf("\t-l | --loader name (defaults to \\elilo.efi)\n"); ++ printf("\t-l | --loader name (defaults to \\EFI\\redhat\\grub.efi)\n"); + printf("\t-L | --label label Boot manager display label (defaults to \"Linux\")\n"); + printf("\t-n | --bootnext XXXX set BootNext to XXXX (hex)\n"); + printf("\t-N | --delete-bootnext delete BootNext\n"); +@@ -807,7 +807,7 @@ set_default_opts() + opts.active = -1; /* Don't set it */ + opts.timeout = -1; /* Don't set it */ + opts.edd10_devicenum = 0x80; +- opts.loader = "\\elilo.efi"; ++ opts.loader = "\\EFI\\redhat\\grub.efi"; + opts.label = "Linux"; + opts.disk = "/dev/sda"; + opts.iface = NULL; +-- +1.7.0.1 + diff --git a/SOURCES/efibootmgr-0.5.4-fix-disk-minor-number-discovery.patch b/SOURCES/efibootmgr-0.5.4-fix-disk-minor-number-discovery.patch new file mode 100644 index 0000000..e9b5358 --- /dev/null +++ b/SOURCES/efibootmgr-0.5.4-fix-disk-minor-number-discovery.patch @@ -0,0 +1,29 @@ +From f9f4ee75ad745637a47bf17ed968101b1ffbcc1d Mon Sep 17 00:00:00 2001 +From: Matt Domsch +Date: Thu, 23 Jul 2009 14:20:19 -0500 +Subject: [PATCH 4/5] fix disk minor number discovery + +Raymund Will noted disk_info_from_fd() incorrectly used logical && +instead of bitwise & when obtaining the minor number. + +Reported in https://bugzilla.novell.com/show_bug.cgi?id=524529#c1 +--- + src/lib/disk.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/lib/disk.c b/src/lib/disk.c +index ebfe619..8ad590b 100644 +--- a/src/lib/disk.c ++++ b/src/lib/disk.c +@@ -55,7 +55,7 @@ disk_info_from_fd(int fd, + return 1; + } + major = buf.st_dev >> 8; +- minor = buf.st_dev && 0xFF; ++ minor = buf.st_dev & 0xFF; + + /* IDE disks can have up to 64 partitions, or 6 bits worth, + * and have one bit for the disk number. +-- +1.8.0 + diff --git a/SOURCES/efibootmgr-0.5.4-fix-minor-memory-leak.patch b/SOURCES/efibootmgr-0.5.4-fix-minor-memory-leak.patch new file mode 100644 index 0000000..1ff4ce3 --- /dev/null +++ b/SOURCES/efibootmgr-0.5.4-fix-minor-memory-leak.patch @@ -0,0 +1,29 @@ +From 36c3a19c62cc3b6841e363712c3c78ef5915122d Mon Sep 17 00:00:00 2001 +From: Matt Domsch +Date: Thu, 23 Jul 2009 14:18:11 -0500 +Subject: [PATCH 3/5] fix minor memory leak + +David Binderman noted new_data was being allocated but not freed. Not +a big deal as the program exits soon thereafter (and is thus freed), +but worth fixing anyhow. + +Fixes https://bugzilla.novell.com/show_bug.cgi?id=524529#c1 +--- + src/efibootmgr/efibootmgr.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/efibootmgr/efibootmgr.c b/src/efibootmgr/efibootmgr.c +index b984143..de67af0 100644 +--- a/src/efibootmgr/efibootmgr.c ++++ b/src/efibootmgr/efibootmgr.c +@@ -328,6 +328,7 @@ add_to_boot_order(uint16_t num) + /* Now new_data has what we need */ + memcpy(&(boot_order.Data), new_data, new_data_size); + boot_order.DataSize = new_data_size; ++ free(new_data); + return create_or_edit_variable(&boot_order); + } + +-- +1.8.0 + diff --git a/SOURCES/efibootmgr-0.5.4-make_boot_var-does-not-check-for-failed-status-with-.patch b/SOURCES/efibootmgr-0.5.4-make_boot_var-does-not-check-for-failed-status-with-.patch new file mode 100644 index 0000000..75374ac --- /dev/null +++ b/SOURCES/efibootmgr-0.5.4-make_boot_var-does-not-check-for-failed-status-with-.patch @@ -0,0 +1,47 @@ +From 5fcfccb39089febb89945b841f489b5acc7638ce Mon Sep 17 00:00:00 2001 +From: Lane Winner +Date: Tue, 24 Apr 2012 12:58:57 -0500 +Subject: [PATCH 5/5] make_boot_var does not check for failed status with + create_variable. This can result in a memory leak. + Additionally the user should be notified of the + problem. + +We encounter this issue on one system after filling up the UEFI boot list +with dummy devices. + +The patch fix the problem. It was verified on a Mensa system using RHEL 6.0 + +Signed-off-by: Yinghai Lu +--- + src/efibootmgr/efibootmgr.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/src/efibootmgr/efibootmgr.c b/src/efibootmgr/efibootmgr.c +index de67af0..236365a 100644 +--- a/src/efibootmgr/efibootmgr.c ++++ b/src/efibootmgr/efibootmgr.c +@@ -239,6 +239,7 @@ warn_duplicate_name(list_t *boot_list) + static var_entry_t * + make_boot_var(list_t *boot_list) + { ++ efi_status_t status; + var_entry_t *boot; + int free_number; + list_t *pos; +@@ -271,7 +272,12 @@ make_boot_var(list_t *boot_list) + free(boot); + return NULL; + } +- create_variable(&boot->var_data); ++ ++ status = create_variable(&boot->var_data); ++ if (status != EFI_SUCCESS) { ++ free(boot); ++ return NULL; ++ } + list_add_tail(&boot->list, boot_list); + return boot; + } +-- +1.8.0 + diff --git a/SOURCES/efibootmgr-0.5.4-support-4k-sectors.patch b/SOURCES/efibootmgr-0.5.4-support-4k-sectors.patch new file mode 100644 index 0000000..c380c61 --- /dev/null +++ b/SOURCES/efibootmgr-0.5.4-support-4k-sectors.patch @@ -0,0 +1,176 @@ +Return-Path: pjones@redhat.com +Received: from zmta02.collab.prod.int.phx2.redhat.com (LHLO + zmta02.collab.prod.int.phx2.redhat.com) (10.5.5.32) by + mail04.corp.redhat.com with LMTP; Wed, 14 Jul 2010 14:25:52 -0400 (EDT) +Received: from localhost (localhost.localdomain [127.0.0.1]) + by zmta02.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id B69C19F152 + for ; Wed, 14 Jul 2010 14:25:52 -0400 (EDT) +Received: from zmta02.collab.prod.int.phx2.redhat.com ([127.0.0.1]) + by localhost (zmta02.collab.prod.int.phx2.redhat.com [127.0.0.1]) (amavisd-new, port 10024) + with ESMTP id jCHcGZehMQ5J for ; + Wed, 14 Jul 2010 14:25:52 -0400 (EDT) +Received: from int-mx08.intmail.prod.int.phx2.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.21]) + by zmta02.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id A601C9F14C + for ; Wed, 14 Jul 2010 14:25:52 -0400 (EDT) +Received: from pjones4.install.bos.redhat.com (pjones4.install.bos.redhat.com [10.16.52.154]) + by int-mx08.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o6EIPpGh017771; + Wed, 14 Jul 2010 14:25:52 -0400 +From: Peter Jones +To: Matt Domsch +Cc: Peter Jones , Stuart Hayes +Subject: [efibootmgr patch] Handle sector_size != 512. +Date: Wed, 14 Jul 2010 14:26:49 -0400 +Message-Id: <1279132009-26635-1-git-send-email-pjones@redhat.com> +In-Reply-To: <1279121617-17961-1-git-send-email-pjones@redhat.com> +References: <1279121617-17961-1-git-send-email-pjones@redhat.com> +X-Scanned-By: MIMEDefang 2.67 on 10.5.11.21 + +Disks can have 4kB sectors now, so don't just bail out when that's the +case. +--- + src/include/disk.h | 3 +++ + src/lib/disk.c | 43 +++++++++++++++++++++++++++++++++---------- + src/lib/gpt.c | 30 ++++++++++++++---------------- + 3 files changed, 50 insertions(+), 26 deletions(-) + +diff --git a/src/include/disk.h b/src/include/disk.h +index eb93d10..8aa37d7 100644 +--- a/src/include/disk.h ++++ b/src/include/disk.h +@@ -65,6 +65,9 @@ enum _interface_type {interface_type_unknown, + ata, atapi, scsi, usb, + i1394, fibre, i2o, md}; + ++ ++unsigned int lcm(unsigned int x, unsigned int y); ++ + int disk_get_pci(int fd, + unsigned char *bus, + unsigned char *device, +diff --git a/src/lib/disk.c b/src/lib/disk.c +index 883864f..9c3a878 100644 +--- a/src/lib/disk.c ++++ b/src/lib/disk.c +@@ -420,6 +420,27 @@ get_sector_size(int filedes) + return sector_size; + } + ++/************************************************************ ++ * lcm ++ * Requires: ++ * - numbers of which to find the lowest common multiple ++ * Modifies: nothing ++ * Returns: ++ * lowest common multiple of x and y ++ ************************************************************/ ++unsigned int ++lcm(unsigned int x, unsigned int y) ++{ ++ unsigned int m = x, n = y, o; ++ ++ while ((o = m % n)) { ++ m = n; ++ n = o; ++ } ++ ++ return (x / n) * y; ++} ++ + /** + * disk_get_partition_info() + * @fd - open file descriptor to disk +@@ -442,26 +463,27 @@ disk_get_partition_info (int fd, + uint8_t *mbr_type, uint8_t *signature_type) + { + legacy_mbr *mbr; +- void *mbr_unaligned; ++ void *mbr_sector; ++ size_t mbr_size; + off_t offset; + int this_bytes_read = 0; + int gpt_invalid=0, mbr_invalid=0; + int rc=0; + int sector_size = get_sector_size(fd); + +- if (sizeof(*mbr) != sector_size) +- return 1; +- mbr_unaligned = malloc(sizeof(*mbr)+sector_size-1); +- mbr = (legacy_mbr *) +- (((unsigned long)mbr_unaligned + sector_size - 1) & +- ~(unsigned long)(sector_size-1)); +- memset(mbr, 0, sizeof(*mbr)); ++ ++ mbr_size = lcm(sizeof(*mbr), sector_size); ++ if ((rc = posix_memalign(&mbr_sector, sector_size, mbr_size)) != 0) ++ goto error; ++ memset(mbr_sector, '\0', mbr_size); ++ + offset = lseek(fd, 0, SEEK_SET); +- this_bytes_read = read(fd, mbr, sizeof(*mbr)); ++ this_bytes_read = read(fd, mbr_sector, mbr_size); + if (this_bytes_read < sizeof(*mbr)) { + rc=1; + goto error_free_mbr; + } ++ mbr = (legacy_mbr *)mbr_sector; + gpt_invalid = gpt_disk_get_partition_info(fd, num, + start, size, + signature, +@@ -479,7 +501,8 @@ disk_get_partition_info (int fd, + } + } + error_free_mbr: +- free(mbr_unaligned); ++ free(mbr_sector); ++ error: + return rc; + } + +diff --git a/src/lib/gpt.c b/src/lib/gpt.c +index d90ddaf..83e7a94 100644 +--- a/src/lib/gpt.c ++++ b/src/lib/gpt.c +@@ -215,26 +215,24 @@ read_lastoddsector(int fd, uint64_t lba, void *buffer, size_t count) + static ssize_t + read_lba(int fd, uint64_t lba, void *buffer, size_t bytes) + { +- int sector_size = get_sector_size(fd); +- off_t offset = lba * sector_size; ++ int sector_size = get_sector_size(fd); ++ off_t offset = lba * sector_size; + ssize_t bytesread; +- void *aligned; +- void *unaligned; +- +- if (bytes % sector_size) +- return EINVAL; ++ void *iobuf; ++ size_t iobuf_size; ++ int rc; + +- unaligned = malloc(bytes+sector_size-1); +- aligned = (void *) +- (((unsigned long)unaligned + sector_size - 1) & +- ~(unsigned long)(sector_size-1)); +- memset(aligned, 0, bytes); ++ iobuf_size = lcm(bytes, sector_size); ++ rc = posix_memalign(&iobuf, sector_size, iobuf_size); ++ if (rc) ++ return rc; ++ memset(iobuf, 0, bytes); + + +- lseek(fd, offset, SEEK_SET); +- bytesread = read(fd, aligned, bytes); +- memcpy(buffer, aligned, bytesread); +- free(unaligned); ++ lseek(fd, offset, SEEK_SET); ++ bytesread = read(fd, iobuf, iobuf_size); ++ memcpy(buffer, iobuf, bytes); ++ free(iobuf); + + /* Kludge. This is necessary to read/write the last + block of an odd-sized disk, until Linux 2.5.x kernel fixes. +-- +1.7.1.1 + diff --git a/SPECS/efibootmgr.spec b/SPECS/efibootmgr.spec new file mode 100644 index 0000000..32f90c3 --- /dev/null +++ b/SPECS/efibootmgr.spec @@ -0,0 +1,118 @@ +Summary: EFI Boot Manager +Name: efibootmgr +Version: 0.5.4 +Release: 15%{?dist} +Group: System Environment/Base +License: GPLv2+ +URL: http://linux.dell.com/%{name}/ +BuildRequires: pciutils-devel, zlib-devel, git +BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXXXX) +# EFI/UEFI don't exist on PPC +ExclusiveArch: %{ix86} x86_64 ia64 + +# for RHEL / Fedora when efibootmgr was part of the elilo package +Conflicts: elilo <= 3.6-5 +Obsoletes: elilo <= 3.6-5 + +Source0: http://linux.dell.com/%{name}/permalink/%{name}-%{version}.tar.gz +Patch0: efibootmgr-0.5.4-default-to-grub.patch +Patch1: efibootmgr-0.5.4-support-4k-sectors.patch +Patch2: efibootmgr-0.5.4-Work-around-broken-Apple-firmware.patch +Patch3: efibootmgr-0.5.4-Remove-device-path-padding-on-non-Itanium.patch +Patch4: efibootmgr-0.5.4-fix-minor-memory-leak.patch +Patch5: efibootmgr-0.5.4-fix-disk-minor-number-discovery.patch +Patch6: efibootmgr-0.5.4-make_boot_var-does-not-check-for-failed-status-with-.patch + +%description +%{name} displays and allows the user to edit the Intel Extensible +Firmware Interface (EFI) Boot Manager variables. Additional +information about EFI can be found at +http://developer.intel.com/technology/efi/efi.htm and http://uefi.org/. + +%prep +%setup -q +git init +git config user.email "pjones@fedoraproject.org" +git config user.name "Fedora Ninjas" +git add . +git commit -a -q -m "%{version} baseline." +git am %{patches} + +%build +make %{?_smp_mflags} EXTRA_CFLAGS='%{optflags}' + +%install +rm -rf %{buildroot} +mkdir -p %{buildroot}%{_sbindir} %{buildroot}%{_mandir}/man8 +install -p --mode 755 src/%{name}/%{name} %{buildroot}%{_sbindir} +gzip -9 -c src/man/man8/%{name}.8 > src/man/man8/%{name}.8.gz +touch -r src/man/man8/%{name}.8 src/man/man8/%{name}.8.gz +install -p --mode 644 src/man/man8/%{name}.8.gz %{buildroot}%{_mandir}/man8 + +%clean +rm -rf %{buildroot} + +%files +%defattr(-,root,root,-) +%{_sbindir}/%{name} +%{_mandir}/man8/%{name}.8.gz +%doc README INSTALL COPYING + +%changelog + +* Thu Apr 25 2013 Matthew Garrett - 0.5.4-15 +- efibootmgr-0.5.4-Work-around-broken-Apple-firmware.patch + Resolves: #873629 +- efibootmgr-0.5.4-Remove-device-path-padding-on-non-Itanium.patch - improve + spec conformance +- efibootmgr-0.5.4-fix-minor-memory-leak.patch - from upstream +- efibootmgr-0.5.4-fix-disk-minor-number-discovery.patch - from upstream +- efibootmgr-0.5.4-make_boot_var-does-not-check-for-failed-status-with-.patch - + from upstream + +* Wed Feb 13 2013 Fedora Release Engineering - 0.5.4-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Wed Jul 18 2012 Fedora Release Engineering - 0.5.4-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Fri Jan 13 2012 Fedora Release Engineering - 0.5.4-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Feb 08 2011 Fedora Release Engineering - 0.5.4-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Wed Dec 01 2010 Peter Jones - 0.5.4-10 +- Add support for bootable devices with 4kB sectors. + +* Wed Apr 14 2010 Peter Jones - 0.5.4-9 +- Make \EFI\redhat\grub.efi the default bootloader + Resolves: rhbz#579665 + +* Fri Jul 24 2009 Fedora Release Engineering - 0.5.4-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Fri Mar 06 2009 Matt Domsch - 0.5.4-6 +- make ExclusiveArch %%{ix86} now that packages are being built as .i586 + +* Tue Feb 24 2009 Fedora Release Engineering - 0.5.4-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Thu Apr 03 2008 Peter Jones - 0.5.4-4 +- Revert changes in -3, they weren't finalized and we don't need + the feature at this time. + +* Thu Mar 06 2008 Peter Jones - 0.5.4-3 +- Add support for setting driver related variables. + +* Tue Feb 5 2008 Matt Domsch 0.5.4-2 +- rebuild with conflicts/obsoletes matching elilo + +* Thu Jan 3 2008 Matt Domsch 0.5.4-1 +- split efibootmgr into its own RPM for Fedora/RHEL. + +* Thu Aug 24 2004 Matt Domsch +- new home linux.dell.com + +* Fri May 18 2001 Matt Domsch +- See doc/ChangeLog