svn commit: r326448 - in head: stand stand/geli stand/i386/gptboot stand/i386/libi386 stand/i386/zfsboot stand/libsa stand/zfs sys/cddl/boot/zfs
Warner Losh
imp at FreeBSD.org
Sat Dec 2 00:07:43 UTC 2017
Author: imp
Date: Sat Dec 2 00:07:37 2017
New Revision: 326448
URL: https://svnweb.freebsd.org/changeset/base/326448
Log:
Fix all warnings related to geli and ZFS support on x86.
Default WARNS to 0 still, since there's still some warnings on other
architectures.
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D13301
Modified:
head/stand/defs.mk
head/stand/geli/Makefile
head/stand/geli/geliboot.c
head/stand/i386/gptboot/gptboot.c
head/stand/i386/libi386/biosdisk.c
head/stand/i386/zfsboot/zfsboot.c
head/stand/libsa/Makefile
head/stand/zfs/zfsimpl.c
head/sys/cddl/boot/zfs/zfssubr.c
Modified: head/stand/defs.mk
==============================================================================
--- head/stand/defs.mk Sat Dec 2 00:07:31 2017 (r326447)
+++ head/stand/defs.mk Sat Dec 2 00:07:37 2017 (r326448)
@@ -2,6 +2,8 @@
.include <src.opts.mk>
+WARNS?=0
+
.if !defined(__BOOT_DEFS_MK__)
__BOOT_DEFS_MK__=${MFILE}
Modified: head/stand/geli/Makefile
==============================================================================
--- head/stand/geli/Makefile Sat Dec 2 00:07:31 2017 (r326447)
+++ head/stand/geli/Makefile Sat Dec 2 00:07:37 2017 (r326448)
@@ -12,8 +12,6 @@ INTERNALLIB=
MK_PROFILE= no
NO_PIC=
-WARNS?= 0
-
# Our password input method
SRCS+= pwgets.c
Modified: head/stand/geli/geliboot.c
==============================================================================
--- head/stand/geli/geliboot.c Sat Dec 2 00:07:31 2017 (r326447)
+++ head/stand/geli/geliboot.c Sat Dec 2 00:07:37 2017 (r326448)
@@ -222,7 +222,7 @@ geli_taste(int read_func(void *vdev, void *priv, off_t
*/
static int
geli_attach(struct geli_entry *ge, struct dsk *dskp, const char *passphrase,
- const u_char *mkeyp)
+ u_char *mkeyp)
{
u_char key[G_ELI_USERKEYLEN], mkey[G_ELI_DATAIVKEYLEN], *mkp;
u_int keynum;
@@ -248,7 +248,7 @@ geli_attach(struct geli_entry *ge, struct dsk *dskp, c
} else if (geli_e->md.md_iterations == 0) {
g_eli_crypto_hmac_update(&ctx, geli_e->md.md_salt,
sizeof(geli_e->md.md_salt));
- g_eli_crypto_hmac_update(&ctx, passphrase,
+ g_eli_crypto_hmac_update(&ctx, (const uint8_t *)passphrase,
strlen(passphrase));
} else if (geli_e->md.md_iterations > 0) {
printf("Calculating GELI Decryption Key disk%dp%d @ %d"
@@ -294,7 +294,7 @@ found_key:
/*
* The encryption key is: ekey = HMAC_SHA512(Data-Key, 0x10)
*/
- g_eli_crypto_hmac(mkp, G_ELI_MAXKEYLEN, "\x10", 1,
+ g_eli_crypto_hmac(mkp, G_ELI_MAXKEYLEN, (const uint8_t *)"\x10", 1,
geli_e->sc.sc_ekey, 0);
}
explicit_bzero(mkey, sizeof(mkey));
Modified: head/stand/i386/gptboot/gptboot.c
==============================================================================
--- head/stand/i386/gptboot/gptboot.c Sat Dec 2 00:07:31 2017 (r326447)
+++ head/stand/i386/gptboot/gptboot.c Sat Dec 2 00:07:37 2017 (r326448)
@@ -32,6 +32,10 @@ __FBSDID("$FreeBSD$");
#include <btxv86.h>
+/* Forward declared to avoid warnings -- these shouldn't be needed */
+int strcasecmp(const char *s1, const char *s2);
+void explicit_bzero(void *b, size_t len);
+
#include "bootargs.h"
#include "lib.h"
#include "rbx.h"
@@ -254,7 +258,7 @@ gptinit(void)
#ifdef LOADER_GELI_SUPPORT
if (geli_taste(vdev_read, &dsk, (gpttable[curent].ent_lba_end -
gpttable[curent].ent_lba_start)) == 0) {
- if (geli_havekey(&dsk) != 0 && geli_passphrase(&gelipw,
+ if (geli_havekey(&dsk) != 0 && geli_passphrase(gelipw,
dsk.unit, 'p', curent + 1, &dsk) != 0) {
printf("%s: unable to decrypt GELI key\n", BOOTPROG);
return (-1);
@@ -265,6 +269,8 @@ gptinit(void)
dsk_meta = 0;
return (0);
}
+
+int main(void);
int
main(void)
Modified: head/stand/i386/libi386/biosdisk.c
==============================================================================
--- head/stand/i386/libi386/biosdisk.c Sat Dec 2 00:07:31 2017 (r326447)
+++ head/stand/i386/libi386/biosdisk.c Sat Dec 2 00:07:37 2017 (r326448)
@@ -146,8 +146,7 @@ enum isgeli {
};
static enum isgeli geli_status[MAXBDDEV][MAXTBLENTS];
-int bios_read(void *vdev __unused, struct dsk *priv, off_t off, char *buf,
- size_t bytes);
+int bios_read(void *, void *, off_t off, void *buf, size_t bytes);
#endif /* LOADER_GELI_SUPPORT */
struct devsw biosdisk = {
@@ -482,10 +481,10 @@ bd_open(struct open_file *f, ...)
/* Use the cached passphrase */
bcopy(passphrase, &gelipw, GELI_PW_MAXLEN);
}
- if (geli_passphrase(&gelipw, dskp.unit, 'p',
+ if (geli_passphrase(gelipw, dskp.unit, 'p',
(dskp.slice > 0 ? dskp.slice : dskp.part),
&dskp) == 0) {
- setenv("kern.geom.eli.passphrase", &gelipw, 1);
+ setenv("kern.geom.eli.passphrase", gelipw, 1);
bzero(gelipw, sizeof(gelipw));
geli_status[dev->d_unit][dskp.slice] = ISGELI_YES;
geli_part++;
@@ -882,7 +881,7 @@ bd_read(struct disk_devdesc *dev, daddr_t dblk, int bl
/* GELI needs the offset relative to the partition start */
p_off = alignlba - dskp.start;
- err = geli_read(&dskp, p_off * BD(dev).bd_sectorsize, tmpbuf,
+ err = geli_read(&dskp, p_off * BD(dev).bd_sectorsize, (u_char *)tmpbuf,
alignblks * BD(dev).bd_sectorsize);
if (err)
return (err);
@@ -992,9 +991,10 @@ bd_getdev(struct i386_devdesc *d)
#ifdef LOADER_GELI_SUPPORT
int
-bios_read(void *vdev __unused, struct dsk *priv, off_t off, char *buf, size_t bytes)
+bios_read(void *vdev __unused, void *xpriv, off_t off, void *buf, size_t bytes)
{
struct disk_devdesc dev;
+ struct dsk *priv = xpriv;
dev.d_dev = &biosdisk;
dev.d_type = priv->type;
Modified: head/stand/i386/zfsboot/zfsboot.c
==============================================================================
--- head/stand/i386/zfsboot/zfsboot.c Sat Dec 2 00:07:31 2017 (r326447)
+++ head/stand/i386/zfsboot/zfsboot.c Sat Dec 2 00:07:37 2017 (r326448)
@@ -36,6 +36,10 @@ __FBSDID("$FreeBSD$");
#include <btxv86.h>
+/* Forward declared to avoid warnings -- these shouldn't be needed */
+int strcasecmp(const char *s1, const char *s2);
+void explicit_bzero(void *b, size_t len);
+
#include "lib.h"
#include "rbx.h"
#include "drv.h"
@@ -96,7 +100,6 @@ static int comspeed = SIOSPD;
static struct bootinfo bootinfo;
static uint32_t bootdev;
static struct zfs_boot_args zfsargs;
-static struct zfsmount zfsmount;
vm_offset_t high_heap_base;
uint32_t bios_basemem, bios_extmem, high_heap_size;
@@ -200,7 +203,7 @@ static vdev_t *primary_vdev;
* buffer pointer crosses a 64k boundary.
*/
static int
-vdev_read(vdev_t *vdev, void *priv, off_t off, void *buf, size_t bytes)
+vdev_read(void *xvdev, void *priv, off_t off, void *buf, size_t bytes)
{
char *p;
daddr_t lba, alignlba;
@@ -262,7 +265,14 @@ vdev_read(vdev_t *vdev, void *priv, off_t off, void *b
return 0;
}
+/* Match the signature exactly due to signature madness */
+static int
+vdev_read2(vdev_t *vdev, void *priv, off_t off, void *buf, size_t bytes)
+{
+ return vdev_read(vdev, priv, off, buf, bytes);
+}
+
static int
vdev_write(vdev_t *vdev, void *priv, off_t off, void *buf, size_t bytes)
{
@@ -557,7 +567,7 @@ probe_drive(struct dsk *dsk)
/*
* If we find a vdev on the whole disk, stop here.
*/
- if (vdev_probe(vdev_read, dsk, NULL) == 0)
+ if (vdev_probe(vdev_read2, dsk, NULL) == 0)
return;
#ifdef LOADER_GELI_SUPPORT
@@ -572,9 +582,9 @@ probe_drive(struct dsk *dsk)
elba--;
}
if (geli_taste(vdev_read, dsk, elba) == 0) {
- if (geli_havekey(dsk) == 0 || geli_passphrase(&gelipw, dsk->unit,
+ if (geli_havekey(dsk) == 0 || geli_passphrase(gelipw, dsk->unit,
':', 0, dsk) == 0) {
- if (vdev_probe(vdev_read, dsk, NULL) == 0) {
+ if (vdev_probe(vdev_read2, dsk, NULL) == 0) {
return;
}
}
@@ -621,7 +631,7 @@ probe_drive(struct dsk *dsk)
dsk->size = ent->ent_lba_end - ent->ent_lba_start + 1;
dsk->slice = part + 1;
dsk->part = 255;
- if (vdev_probe(vdev_read, dsk, NULL) == 0) {
+ if (vdev_probe(vdev_read2, dsk, NULL) == 0) {
/*
* This slice had a vdev. We need a new dsk
* structure now since the vdev now owns this one.
@@ -631,12 +641,12 @@ probe_drive(struct dsk *dsk)
#ifdef LOADER_GELI_SUPPORT
else if (geli_taste(vdev_read, dsk, ent->ent_lba_end -
ent->ent_lba_start) == 0) {
- if (geli_havekey(dsk) == 0 || geli_passphrase(&gelipw,
+ if (geli_havekey(dsk) == 0 || geli_passphrase(gelipw,
dsk->unit, 'p', dsk->slice, dsk) == 0) {
/*
* This slice has GELI, check it for ZFS.
*/
- if (vdev_probe(vdev_read, dsk, NULL) == 0) {
+ if (vdev_probe(vdev_read2, dsk, NULL) == 0) {
/*
* This slice had a vdev. We need a new dsk
* structure now since the vdev now owns this one.
@@ -665,18 +675,18 @@ trymbr:
dsk->start = dp[i].dp_start;
dsk->size = dp[i].dp_size;
dsk->slice = i + 1;
- if (vdev_probe(vdev_read, dsk, NULL) == 0) {
+ if (vdev_probe(vdev_read2, dsk, NULL) == 0) {
dsk = copy_dsk(dsk);
}
#ifdef LOADER_GELI_SUPPORT
else if (geli_taste(vdev_read, dsk, dp[i].dp_size -
dp[i].dp_start) == 0) {
- if (geli_havekey(dsk) == 0 || geli_passphrase(&gelipw, dsk->unit,
+ if (geli_havekey(dsk) == 0 || geli_passphrase(gelipw, dsk->unit,
's', i, dsk) == 0) {
/*
* This slice has GELI, check it for ZFS.
*/
- if (vdev_probe(vdev_read, dsk, NULL) == 0) {
+ if (vdev_probe(vdev_read2, dsk, NULL) == 0) {
/*
* This slice had a vdev. We need a new dsk
* structure now since the vdev now owns this one.
Modified: head/stand/libsa/Makefile
==============================================================================
--- head/stand/libsa/Makefile Sat Dec 2 00:07:31 2017 (r326447)
+++ head/stand/libsa/Makefile Sat Dec 2 00:07:37 2017 (r326448)
@@ -17,7 +17,6 @@ LIBC_SRC= ${SRCTOP}/lib/libc
LIB?= sa
NO_PIC=
-WARNS?= 0
# standalone components and stuff we have modified locally
SRCS+= gzguts.h zutil.h __main.c assert.c bcd.c environment.c getopt.c gets.c \
Modified: head/stand/zfs/zfsimpl.c
==============================================================================
--- head/stand/zfs/zfsimpl.c Sat Dec 2 00:07:31 2017 (r326447)
+++ head/stand/zfs/zfsimpl.c Sat Dec 2 00:07:37 2017 (r326448)
@@ -43,6 +43,7 @@ struct zfsmount {
objset_phys_t objset;
uint64_t rootobj;
};
+static struct zfsmount zfsmount;
/*
* List of all vdevs, chained through v_alllink.
@@ -913,7 +914,7 @@ spa_all_status(void)
return (ret);
}
-uint64_t
+static uint64_t
vdev_label_offset(uint64_t psize, int l, uint64_t offset)
{
uint64_t label_offset;
Modified: head/sys/cddl/boot/zfs/zfssubr.c
==============================================================================
--- head/sys/cddl/boot/zfs/zfssubr.c Sat Dec 2 00:07:31 2017 (r326447)
+++ head/sys/cddl/boot/zfs/zfssubr.c Sat Dec 2 00:07:37 2017 (r326448)
@@ -250,7 +250,7 @@ zio_checksum_template_init(enum zio_checksum checksum,
* all of the checksum context templates and deallocates any that were
* initialized using the algorithm-specific template init function.
*/
-void
+static void
zio_checksum_templates_free(spa_t *spa)
{
for (enum zio_checksum checksum = 0;
More information about the svn-src-all
mailing list