diff options
-rw-r--r-- | include/sys/sysmacros.h | 1 | ||||
-rw-r--r-- | include/sys/systeminfo.h | 1 | ||||
-rw-r--r-- | module/spl/spl-generic.c | 55 | ||||
-rw-r--r-- | module/spl/spl-proc.c | 13 |
4 files changed, 6 insertions, 64 deletions
diff --git a/include/sys/sysmacros.h b/include/sys/sysmacros.h index b4778b70e..1ac49b4f0 100644 --- a/include/sys/sysmacros.h +++ b/include/sys/sysmacros.h @@ -143,7 +143,6 @@ /* Missing globals */ extern char spl_version[32]; extern unsigned long spl_hostid; -extern char hw_serial[11]; /* Missing misc functions */ extern int highbit(unsigned long i); diff --git a/include/sys/systeminfo.h b/include/sys/systeminfo.h index e22a08530..5c0cc4663 100644 --- a/include/sys/systeminfo.h +++ b/include/sys/systeminfo.h @@ -25,7 +25,6 @@ #ifndef _SPL_SYSTEMINFO_H #define _SPL_SYSTEMINFO_H -#define HW_INVALID_HOSTID 0xFFFFFFFF /* an invalid hostid */ #define HW_HOSTID_LEN 11 /* minimum buffer size needed */ /* to hold a decimal or hex */ /* hostid string */ diff --git a/module/spl/spl-generic.c b/module/spl/spl-generic.c index 351f53670..4f0842b1a 100644 --- a/module/spl/spl-generic.c +++ b/module/spl/spl-generic.c @@ -52,14 +52,11 @@ char spl_version[32] = "SPL v" SPL_META_VERSION "-" SPL_META_RELEASE; EXPORT_SYMBOL(spl_version); -unsigned long spl_hostid = HW_INVALID_HOSTID; +unsigned long spl_hostid = 0; EXPORT_SYMBOL(spl_hostid); module_param(spl_hostid, ulong, 0644); MODULE_PARM_DESC(spl_hostid, "The system hostid."); -char hw_serial[HW_HOSTID_LEN] = "<none>"; -EXPORT_SYMBOL(hw_serial); - proc_t p0 = { 0 }; EXPORT_SYMBOL(p0); @@ -467,7 +464,7 @@ hostid_read(void) int result; uint64_t size; struct _buf *file; - unsigned long hostid = 0; + uint32_t hostid = 0; file = kobj_open_file(spl_hostid_path); @@ -511,45 +508,10 @@ hostid_read(void) return 0; } -#define GET_HOSTID_CMD \ - "exec 0</dev/null " \ - " 1>/proc/sys/kernel/spl/hostid " \ - " 2>/dev/null; " \ - "hostid" - -static int -hostid_exec(void) -{ - char *argv[] = { "/bin/sh", - "-c", - GET_HOSTID_CMD, - NULL }; - char *envp[] = { "HOME=/", - "TERM=linux", - "PATH=/sbin:/usr/sbin:/bin:/usr/bin", - NULL }; - int rc; - - /* Doing address resolution in the kernel is tricky and just - * not a good idea in general. So to set the proper 'hw_serial' - * use the usermodehelper support to ask '/bin/sh' to run - * '/usr/bin/hostid' and redirect the result to /proc/sys/spl/hostid - * for us to use. It's a horrific solution but it will do for now. - */ - rc = call_usermodehelper(argv[0], argv, envp, UMH_WAIT_PROC); - if (rc) - printk("SPL: Failed user helper '%s %s %s', rc = %d\n", - argv[0], argv[1], argv[2], rc); - - return rc; -} - uint32_t zone_get_hostid(void *zone) { static int first = 1; - unsigned long hostid; - int rc; /* Only the global zone is supported */ ASSERT(zone == NULL); @@ -559,21 +521,16 @@ zone_get_hostid(void *zone) /* * Get the hostid if it was not passed as a module parameter. - * Try reading the /etc/hostid file directly, and then fall - * back to calling the /usr/bin/hostid utility. + * Try reading the /etc/hostid file directly. */ - if ((spl_hostid == HW_INVALID_HOSTID) && - (rc = hostid_read()) && (rc = hostid_exec())) - return HW_INVALID_HOSTID; + if (hostid_read()) + spl_hostid = 0; printk(KERN_NOTICE "SPL: using hostid 0x%08x\n", (unsigned int) spl_hostid); } - if (ddi_strtoul(hw_serial, NULL, HW_HOSTID_LEN-1, &hostid) != 0) - return HW_INVALID_HOSTID; - - return (uint32_t)hostid; + return spl_hostid; } EXPORT_SYMBOL(zone_get_hostid); diff --git a/module/spl/spl-proc.c b/module/spl/spl-proc.c index f25239aca..2bbc8d790 100644 --- a/module/spl/spl-proc.c +++ b/module/spl/spl-proc.c @@ -72,7 +72,6 @@ struct proc_dir_entry *proc_spl_kstat = NULL; #define CTL_VERSION CTL_UNNUMBERED /* Version */ #define CTL_HOSTID CTL_UNNUMBERED /* Host id by /usr/bin/hostid */ -#define CTL_HW_SERIAL CTL_UNNUMBERED /* HW serial number by hostid */ #define CTL_KALLSYMS CTL_UNNUMBERED /* kallsyms_lookup_name addr */ #define CTL_DEBUG_SUBSYS CTL_UNNUMBERED /* Debug subsystem */ @@ -129,7 +128,6 @@ enum { enum { CTL_VERSION = 1, /* Version */ CTL_HOSTID, /* Host id reported by /usr/bin/hostid */ - CTL_HW_SERIAL, /* Hardware serial number from hostid */ CTL_KALLSYMS, /* Address of kallsyms_lookup_name */ #ifdef DEBUG_LOG @@ -513,9 +511,6 @@ SPL_PROC_HANDLER(proc_dohostid) if (str == end) SRETURN(-EINVAL); - (void) snprintf(hw_serial, HW_HOSTID_LEN, "%lu", spl_hostid); - hw_serial[HW_HOSTID_LEN - 1] = '\0'; - *ppos += *lenp; } else { len = snprintf(str, sizeof(str), "%lx", spl_hostid); if (*ppos >= len) @@ -1058,14 +1053,6 @@ static struct ctl_table spl_table[] = { .mode = 0644, .proc_handler = &proc_dohostid, }, - { - CTL_NAME (CTL_HW_SERIAL) - .procname = "hw_serial", - .data = hw_serial, - .maxlen = sizeof(hw_serial), - .mode = 0444, - .proc_handler = &proc_dostring, - }, #ifndef HAVE_KALLSYMS_LOOKUP_NAME { CTL_NAME (CTL_KALLSYMS) |