Module Name: src
Committed By: christos
Date: Sun Aug 16 20:28:19 UTC 2009
Modified Files:
src/sys/kern: init_sysctl.c
Log Message:
provide compatibility for the older variant of kern.consdev, which used
a 32 bit dev_t. Reported by mrg.
To generate a diff of this commit:
cvs rdiff -u -r1.164 -r1.165 src/sys/kern/init_sysctl.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/kern/init_sysctl.c
diff -u src/sys/kern/init_sysctl.c:1.164 src/sys/kern/init_sysctl.c:1.165
--- src/sys/kern/init_sysctl.c:1.164 Sun May 24 17:41:26 2009
+++ src/sys/kern/init_sysctl.c Sun Aug 16 16:28:19 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: init_sysctl.c,v 1.164 2009/05/24 21:41:26 ad Exp $ */
+/* $NetBSD: init_sysctl.c,v 1.165 2009/08/16 20:28:19 christos Exp $ */
/*-
* Copyright (c) 2003, 2007, 2008, 2009 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: init_sysctl.c,v 1.164 2009/05/24 21:41:26 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: init_sysctl.c,v 1.165 2009/08/16 20:28:19 christos Exp $");
#include "opt_sysv.h"
#include "opt_compat_netbsd32.h"
@@ -2865,6 +2865,7 @@
sysctl_consdev(SYSCTLFN_ARGS)
{
dev_t consdev;
+ uint32_t oconsdev;
struct sysctlnode node;
if (cn_tab != NULL)
@@ -2872,8 +2873,19 @@
else
consdev = NODEV;
node = *rnode;
- node.sysctl_data = &consdev;
- node.sysctl_size = sizeof(consdev);
+ switch (*oldlenp) {
+ case sizeof(consdev):
+ node.sysctl_data = &consdev;
+ node.sysctl_size = sizeof(consdev);
+ break;
+ case sizeof(oconsdev):
+ oconsdev = (uint32_t)consdev;
+ node.sysctl_data = &oconsdev;
+ node.sysctl_size = sizeof(oconsdev);
+ break;
+ default:
+ return EINVAL;
+ }
return (sysctl_lookup(SYSCTLFN_CALL(&node)));
}