+++ /dev/null
-From 9abbaae7cdc5ffba6065c089c9ebb076864d9bbd Mon Sep 17 00:00:00 2001
-From: Vladimir Serbinenko <phcoder@gmail.com>
-Date: Wed, 29 Jan 2014 22:50:49 +0000
-Subject: * grub-core/disk/ahci.c: Increase timeout. Some SSDs take up to
-
- 7 seconds to recover if last poweroff was bad.
----
-(limited to 'grub-core/disk/ahci.c')
-
-diff --git a/grub-core/disk/ahci.c b/grub-core/disk/ahci.c
-index fdd40c6..5e4a639 100644
---- a/grub-core/disk/ahci.c
-+++ b/grub-core/disk/ahci.c
-@@ -1022,7 +1022,7 @@ grub_ahci_readwrite_real (struct grub_ahci_device *dev,
- grub_dprintf ("ahci", "AHCI tfd = %x\n",
- dev->hba->ports[dev->port].task_file_data);
-
-- endtime = grub_get_time_ms () + (spinup ? 10000 : 5000);
-+ endtime = grub_get_time_ms () + (spinup ? 20000 : 20000);
- while ((dev->hba->ports[dev->port].command_issue & 1))
- if (grub_get_time_ms () > endtime)
- {
---
-cgit v0.9.0.2
+++ /dev/null
-From d1130afa5f22e4fee75ab55f11e16e0fbd98597d Mon Sep 17 00:00:00 2001
-From: Vladimir Serbinenko <phcoder@gmail.com>
-Date: Sat, 24 Jan 2015 20:50:30 +0000
-Subject: biosdisk: Add missing cast.
-
-Found by: Coverity scan.
----
-diff --git a/grub-core/disk/i386/pc/biosdisk.c b/grub-core/disk/i386/pc/biosdisk.c
-index 26a4973..f0aadd1 100644
---- a/grub-core/disk/i386/pc/biosdisk.c
-+++ b/grub-core/disk/i386/pc/biosdisk.c
-@@ -382,7 +382,8 @@ grub_biosdisk_open (const char *name, grub_disk_t disk)
- /* Some buggy BIOSes doesn't return the total sectors
- correctly but returns zero. So if it is zero, compute
- it by C/H/S returned by the LBA BIOS call. */
-- total_sectors = drp->cylinders * drp->heads * drp->sectors;
-+ total_sectors = ((grub_uint64_t) drp->cylinders)
-+ * drp->heads * drp->sectors;
- if (drp->bytes_per_sector
- && !(drp->bytes_per_sector & (drp->bytes_per_sector - 1))
- && drp->bytes_per_sector >= 512
-@@ -425,7 +426,8 @@ grub_biosdisk_open (const char *name, grub_disk_t disk)
- data->heads = 255;
-
- if (! total_sectors)
-- total_sectors = data->cylinders * data->heads * data->sectors;
-+ total_sectors = ((grub_uint64_t) data->cylinders)
-+ * data->heads * data->sectors;
- }
-
- disk->total_sectors = total_sectors;
---
-cgit v0.9.0.2
+++ /dev/null
-From 4200ad44fe782193a397bd0f0ab72283a6d25e89 Mon Sep 17 00:00:00 2001
-From: Vladimir Serbinenko <phcoder@gmail.com>
-Date: Tue, 20 Jan 2015 14:10:34 +0000
-Subject: * grub-core/disk/i386/pc/biosdisk.c: Check disk size sanity.
-
----
-diff --git a/grub-core/disk/i386/pc/biosdisk.c b/grub-core/disk/i386/pc/biosdisk.c
-index 6b21525..26a4973 100644
---- a/grub-core/disk/i386/pc/biosdisk.c
-+++ b/grub-core/disk/i386/pc/biosdisk.c
-@@ -419,6 +419,11 @@ grub_biosdisk_open (const char *name, grub_disk_t disk)
- }
- }
-
-+ if (data->sectors == 0)
-+ data->sectors = 63;
-+ if (data->heads == 0)
-+ data->heads = 255;
-+
- if (! total_sectors)
- total_sectors = data->cylinders * data->heads * data->sectors;
- }
---
-cgit v0.9.0.2
+++ /dev/null
-Index: new/Makefile.util.def
-===================================================================
---- new.orig/Makefile.util.def 2013-12-24 17:45:34.000000000 +0100
-+++ new/Makefile.util.def 2015-01-13 08:28:23.000000000 +0100
-@@ -385,6 +385,7 @@
- ldadd = libgrubkern.a;
- ldadd = grub-core/gnulib/libgnu.a;
- ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBGEOM)';
-+ ldadd = '$(LIBZFS) $(LIBNVPAIR)';
- };
-
- program = {
+++ /dev/null
-From 12a9c52e516b94888db0a4502946242e3b14709f Mon Sep 17 00:00:00 2001
-From: Vladimir Serbinenko <phcoder@gmail.com>
-Date: Sat, 24 Jan 2015 19:57:26 +0000
-Subject: zfs: Fix disk-matching logic.
-
-Reported by: Tim Chase <dweeezil>
----
-(limited to 'grub-core/fs/zfs')
-
-diff --git a/grub-core/fs/zfs/zfs.c b/grub-core/fs/zfs/zfs.c
-index c943b52..c8c7b97 100644
---- a/grub-core/fs/zfs/zfs.c
-+++ b/grub-core/fs/zfs/zfs.c
-@@ -252,7 +252,6 @@ struct grub_zfs_data
-
- uberblock_t current_uberblock;
-
-- int mounted;
- grub_uint64_t guid;
- };
-
-@@ -957,7 +956,7 @@ nvpair_value (const char *nvp,char **val,
- static grub_err_t
- check_pool_label (struct grub_zfs_data *data,
- struct grub_zfs_device_desc *diskdesc,
-- int *inserted)
-+ int *inserted, int original)
- {
- grub_uint64_t pool_state, txg = 0;
- char *nvlist,*features;
-@@ -1081,11 +1080,12 @@ check_pool_label (struct grub_zfs_data *data,
-
- grub_dprintf ("zfs", "check 11 passed\n");
-
-- if (data->mounted && data->guid != poolguid)
-- return grub_error (GRUB_ERR_BAD_FS, "another zpool");
-- else
-+ if (original)
- data->guid = poolguid;
-
-+ if (data->guid != poolguid)
-+ return grub_error (GRUB_ERR_BAD_FS, "another zpool");
-+
- {
- char *nv;
- nv = grub_zfs_nvlist_lookup_nvlist (nvlist, ZPOOL_CONFIG_VDEV_TREE);
-@@ -1186,7 +1186,7 @@ scan_disk (grub_device_t dev, struct grub_zfs_data *data,
- }
- grub_dprintf ("zfs", "label ok %d\n", label);
-
-- err = check_pool_label (data, &desc, inserted);
-+ err = check_pool_label (data, &desc, inserted, original);
- if (err || !*inserted)
- {
- grub_errno = GRUB_ERR_NONE;
-@@ -3612,8 +3612,6 @@ zfs_mount (grub_device_t dev)
- ub_endian) >> 63) & 1;
- grub_free (osp);
-
-- data->mounted = 1;
--
- return data;
- }
-
---
-cgit v0.9.0.2
+++ /dev/null
-From 0daf46fdbd37627411f3a0dd99390ee4523de1bb Mon Sep 17 00:00:00 2001
-From: Vladimir Serbinenko <phcoder@gmail.com>
-Date: Tue, 27 Jan 2015 15:31:35 +0000
-Subject: fs/zfs: Fix error handling.
-
-Found by: Coverity Scan.
----
-(limited to 'grub-core/fs/zfs')
-
-diff --git a/grub-core/fs/zfs/zfs.c b/grub-core/fs/zfs/zfs.c
-index c8c7b97..9edac50 100644
---- a/grub-core/fs/zfs/zfs.c
-+++ b/grub-core/fs/zfs/zfs.c
-@@ -285,7 +285,7 @@ static const char *spa_feature_names[] = {
-
- static int
- check_feature(const char *name, grub_uint64_t val, struct grub_zfs_dir_ctx *ctx);
--static int
-+static grub_err_t
- check_mos_features(dnode_phys_t *mosmdn_phys,grub_zfs_endian_t endian,struct grub_zfs_data* data );
-
- static grub_err_t
-@@ -1975,7 +1975,7 @@ dmu_read (dnode_end_t * dn, grub_uint64_t blkid, void **buf,
- dn->endian)
- << SPA_MINBLOCKSHIFT;
- *buf = grub_malloc (size);
-- if (*buf)
-+ if (!*buf)
- {
- err = grub_errno;
- break;
-@@ -3979,7 +3979,12 @@ iterate_zap (const char *name, grub_uint64_t val, struct grub_zfs_dir_ctx *ctx)
- dnode_end_t dn;
- grub_memset (&info, 0, sizeof (info));
-
-- dnode_get (&(ctx->data->subvol.mdn), val, 0, &dn, ctx->data);
-+ err = dnode_get (&(ctx->data->subvol.mdn), val, 0, &dn, ctx->data);
-+ if (err)
-+ {
-+ grub_print_error ();
-+ return 0;
-+ }
-
- if (dn.dn.dn_bonustype == DMU_OT_SA)
- {
-@@ -4200,11 +4205,11 @@ check_feature (const char *name, grub_uint64_t val,
- * errnum: Failure.
- */
-
--static int
-+static grub_err_t
- check_mos_features(dnode_phys_t *mosmdn_phys,grub_zfs_endian_t endian,struct grub_zfs_data* data )
- {
- grub_uint64_t objnum;
-- grub_uint8_t errnum = 0;
-+ grub_err_t errnum = 0;
- dnode_end_t dn,mosmdn;
- mzap_phys_t* mzp;
- grub_zfs_endian_t endianzap;
---
-cgit v0.9.0.2
+++ /dev/null
-From 475bffeae67fa0f6787c33147c120b40e89b1985 Mon Sep 17 00:00:00 2001
-From: Vladimir Serbinenko <phcoder@gmail.com>
-Date: Tue, 20 Jan 2015 16:46:55 +0000
-Subject: * grub-core/fs/zfs.c: Avoid divisions by zero.
-
----
-(limited to 'grub-core/fs/zfs')
-
-diff --git a/grub-core/fs/zfs/zfs.c b/grub-core/fs/zfs/zfs.c
-index cfb25c0..c943b52 100644
---- a/grub-core/fs/zfs/zfs.c
-+++ b/grub-core/fs/zfs/zfs.c
-@@ -1501,6 +1501,9 @@ read_device (grub_uint64_t offset, struct grub_zfs_device_desc *desc,
- return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
- "raidz%d is not supported", desc->nparity);
-
-+ if (desc->n_children <= desc->nparity || desc->n_children < 1)
-+ return grub_error(GRUB_ERR_BAD_FS, "too little devices for given parity");
-+
- orig_s = (((len + (1 << desc->ashift) - 1) >> desc->ashift)
- + (desc->n_children - desc->nparity) - 1);
- s = orig_s;
-@@ -2804,6 +2807,9 @@ dnode_get_path (struct subvolume *subvol, const char *path_in, dnode_end_t *dn,
- dnode_path->dn.endian)
- << SPA_MINBLOCKSHIFT);
-
-+ if (blksz == 0)
-+ return grub_error(GRUB_ERR_BAD_FS, "0-sized block");
-+
- sym_value = grub_malloc (sym_sz);
- if (!sym_value)
- return grub_errno;
-@@ -3798,6 +3804,12 @@ grub_zfs_read (grub_file_t file, char *buf, grub_size_t len)
- blksz = grub_zfs_to_cpu16 (data->dnode.dn.dn_datablkszsec,
- data->dnode.endian) << SPA_MINBLOCKSHIFT;
-
-+ if (blksz == 0)
-+ {
-+ grub_error (GRUB_ERR_BAD_FS, "0-sized block");
-+ return -1;
-+ }
-+
- /*
- * Entire Dnode is too big to fit into the space available. We
- * will need to read it in chunks. This could be optimized to
---
-cgit v0.9.0.2
+++ /dev/null
-From e871994849802889af1ad26ddde68e9a12466ba1 Mon Sep 17 00:00:00 2001
-From: Andrei Borzenkov <arvidjaar@gmail.com>
-Date: Tue, 27 Jan 2015 17:52:27 +0000
-Subject: fs/zfs/zfs.c: fix memory leak.
-
-Found by: Coverity scan.
----
-(limited to 'grub-core/fs/zfs')
-
-diff --git a/grub-core/fs/zfs/zfs.c b/grub-core/fs/zfs/zfs.c
-index 9edac50..057b471 100644
---- a/grub-core/fs/zfs/zfs.c
-+++ b/grub-core/fs/zfs/zfs.c
-@@ -2835,6 +2835,8 @@ dnode_get_path (struct subvolume *subvol, const char *path_in, dnode_end_t *dn,
- if (!path_buf)
- {
- grub_free (oldpathbuf);
-+ if (free_symval)
-+ grub_free (sym_value);
- return grub_errno;
- }
- grub_memcpy (path, sym_value, sym_sz);
---
-cgit v0.9.0.2
+++ /dev/null
-From 916733ea6ae90c56797d39bb41b72427da3e1e4f Mon Sep 17 00:00:00 2001
-From: Vladimir Serbinenko <phcoder@gmail.com>
-Date: Tue, 27 Jan 2015 15:35:37 +0000
-Subject: fs/zfscrypt: Add missing explicit cast.
-
-Found by: Coverity scan.
----
-(limited to 'grub-core/fs/zfs')
-
-diff --git a/grub-core/fs/zfs/zfscrypt.c b/grub-core/fs/zfs/zfscrypt.c
-index 88dae72..91a0af6 100644
---- a/grub-core/fs/zfs/zfscrypt.c
-+++ b/grub-core/fs/zfs/zfscrypt.c
-@@ -238,7 +238,7 @@ grub_gcm_decrypt (grub_crypto_cipher_handle_t cipher,
- grub_crypto_xor (out + 16 * i, in + 16 * i, mul, csize);
- }
- for (j = 0; j < 8; j++)
-- mac[15 - j] ^= ((psize * 8) >> (8 * j));
-+ mac[15 - j] ^= ((((grub_uint64_t) psize) * 8) >> (8 * j));
- grub_gcm_mul (mac, h);
-
- if (mac_out)
---
-cgit v0.9.0.2
+++ /dev/null
-From 03d79a878ba04db2cfbbe05564728748de0f6a2f Mon Sep 17 00:00:00 2001
-From: Andrei Borzenkov <arvidjaar@gmail.com>
-Date: Mon, 01 Dec 2014 17:54:12 +0000
-Subject: grub-core/fs/zfs/zfsinfo.c: memory leak in print_vdev_info
-
-CID: 73635
----
-(limited to 'grub-core/fs/zfs')
-
-diff --git a/grub-core/fs/zfs/zfsinfo.c b/grub-core/fs/zfs/zfsinfo.c
-index c96bf21..c8a28ac 100644
---- a/grub-core/fs/zfs/zfsinfo.c
-+++ b/grub-core/fs/zfs/zfsinfo.c
-@@ -130,10 +130,12 @@ print_vdev_info (char *nvlist, int tab)
- grub_free (bootpath);
- grub_free (devid);
- grub_free (path);
-+ grub_free (type);
- return GRUB_ERR_NONE;
- }
- char is_mirror=(grub_strcmp(type,VDEV_TYPE_MIRROR) == 0);
- char is_raidz=(grub_strcmp(type,VDEV_TYPE_RAIDZ) == 0);
-+ grub_free (type);
-
- if (is_mirror || is_raidz)
- {
---
-cgit v0.9.0.2