debian/patches: Remove deprecated and merged patches.
svn path=/dists/trunk/linux-2.6/; revision=13355
This commit is contained in:
parent
3628847498
commit
614815ee15
|
@ -1,113 +0,0 @@
|
|||
From 3d6e48f43340343d97839eadb1ab7b6a3ea98797 Mon Sep 17 00:00:00 2001
|
||||
From: Jarod Wilson <jwilson@redhat.com>
|
||||
Date: Tue, 9 Sep 2008 12:38:56 +0200
|
||||
Subject: S390: CVE-2008-1514: prevent ptrace padding area read/write in 31-bit mode
|
||||
|
||||
From: Jarod Wilson <jwilson@redhat.com>
|
||||
|
||||
commit 3d6e48f43340343d97839eadb1ab7b6a3ea98797 upstream
|
||||
|
||||
When running a 31-bit ptrace, on either an s390 or s390x kernel,
|
||||
reads and writes into a padding area in struct user_regs_struct32
|
||||
will result in a kernel panic.
|
||||
|
||||
This is also known as CVE-2008-1514.
|
||||
|
||||
Test case available here:
|
||||
http://sources.redhat.com/cgi-bin/cvsweb.cgi/~checkout~/tests/ptrace-tests/tests/user-area-padding.c?cvsroot=systemtap
|
||||
|
||||
Steps to reproduce:
|
||||
1) wget the above
|
||||
2) gcc -o user-area-padding-31bit user-area-padding.c -Wall -ggdb2 -D_GNU_SOURCE -m31
|
||||
3) ./user-area-padding-31bit
|
||||
<panic>
|
||||
|
||||
Test status
|
||||
-----------
|
||||
Without patch, both s390 and s390x kernels panic. With patch, the test case,
|
||||
as well as the gdb testsuite, pass without incident, padding area reads
|
||||
returning zero, writes ignored.
|
||||
|
||||
Nb: original version returned -EINVAL on write attempts, which broke the
|
||||
gdb test and made the test case slightly unhappy, Jan Kratochvil suggested
|
||||
the change to return 0 on write attempts.
|
||||
|
||||
Signed-off-by: Jarod Wilson <jarod@redhat.com>
|
||||
Tested-by: Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||
Cc: Moritz Muehlenhoff <jmm@debian.org>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
|
||||
---
|
||||
arch/s390/kernel/compat_ptrace.h | 1 +
|
||||
arch/s390/kernel/ptrace.c | 28 ++++++++++++++++++++++++++++
|
||||
2 files changed, 29 insertions(+)
|
||||
|
||||
--- a/arch/s390/kernel/compat_ptrace.h
|
||||
+++ b/arch/s390/kernel/compat_ptrace.h
|
||||
@@ -42,6 +42,7 @@ struct user_regs_struct32
|
||||
u32 gprs[NUM_GPRS];
|
||||
u32 acrs[NUM_ACRS];
|
||||
u32 orig_gpr2;
|
||||
+ /* nb: there's a 4-byte hole here */
|
||||
s390_fp_regs fp_regs;
|
||||
/*
|
||||
* These per registers are in here so that gdb can modify them
|
||||
--- a/arch/s390/kernel/ptrace.c
|
||||
+++ b/arch/s390/kernel/ptrace.c
|
||||
@@ -177,6 +177,13 @@ peek_user(struct task_struct *child, add
|
||||
*/
|
||||
tmp = (addr_t) task_pt_regs(child)->orig_gpr2;
|
||||
|
||||
+ } else if (addr < (addr_t) &dummy->regs.fp_regs) {
|
||||
+ /*
|
||||
+ * prevent reads of padding hole between
|
||||
+ * orig_gpr2 and fp_regs on s390.
|
||||
+ */
|
||||
+ tmp = 0;
|
||||
+
|
||||
} else if (addr < (addr_t) (&dummy->regs.fp_regs + 1)) {
|
||||
/*
|
||||
* floating point regs. are stored in the thread structure
|
||||
@@ -268,6 +275,13 @@ poke_user(struct task_struct *child, add
|
||||
*/
|
||||
task_pt_regs(child)->orig_gpr2 = data;
|
||||
|
||||
+ } else if (addr < (addr_t) &dummy->regs.fp_regs) {
|
||||
+ /*
|
||||
+ * prevent writes of padding hole between
|
||||
+ * orig_gpr2 and fp_regs on s390.
|
||||
+ */
|
||||
+ return 0;
|
||||
+
|
||||
} else if (addr < (addr_t) (&dummy->regs.fp_regs + 1)) {
|
||||
/*
|
||||
* floating point regs. are stored in the thread structure
|
||||
@@ -409,6 +423,13 @@ peek_user_emu31(struct task_struct *chil
|
||||
*/
|
||||
tmp = *(__u32*)((addr_t) &task_pt_regs(child)->orig_gpr2 + 4);
|
||||
|
||||
+ } else if (addr < (addr_t) &dummy32->regs.fp_regs) {
|
||||
+ /*
|
||||
+ * prevent reads of padding hole between
|
||||
+ * orig_gpr2 and fp_regs on s390.
|
||||
+ */
|
||||
+ tmp = 0;
|
||||
+
|
||||
} else if (addr < (addr_t) (&dummy32->regs.fp_regs + 1)) {
|
||||
/*
|
||||
* floating point regs. are stored in the thread structure
|
||||
@@ -488,6 +509,13 @@ poke_user_emu31(struct task_struct *chil
|
||||
*/
|
||||
*(__u32*)((addr_t) &task_pt_regs(child)->orig_gpr2 + 4) = tmp;
|
||||
|
||||
+ } else if (addr < (addr_t) &dummy32->regs.fp_regs) {
|
||||
+ /*
|
||||
+ * prevent writess of padding hole between
|
||||
+ * orig_gpr2 and fp_regs on s390.
|
||||
+ */
|
||||
+ return 0;
|
||||
+
|
||||
} else if (addr < (addr_t) (&dummy32->regs.fp_regs + 1)) {
|
||||
/*
|
||||
* floating point regs. are stored in the thread structure
|
|
@ -1,148 +0,0 @@
|
|||
From: Bjorn Helgaas <bjorn.helgaas@hp.com>
|
||||
Date: Tue, 14 Oct 2008 23:01:03 +0000 (-0600)
|
||||
Subject: x86: register a platform RTC device if PNP doesn't describe it
|
||||
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=758a7f7bb86b520aadc484f23da85e547b3bf3d8
|
||||
|
||||
x86: register a platform RTC device if PNP doesn't describe it
|
||||
|
||||
Most if not all x86 platforms have an RTC device, but sometimes the RTC
|
||||
is not exposed as a PNP0b00/PNP0b01/PNP0b02 device in PNPBIOS or ACPI:
|
||||
|
||||
http://bugzilla.kernel.org/show_bug.cgi?id=11580
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=451188
|
||||
|
||||
It's best if we can discover the RTC via PNP because then we know
|
||||
which flavor of device it is, where it lives, and which IRQ it uses.
|
||||
|
||||
But if we can't, we should register a platform device using the
|
||||
compiled-in RTC_PORT/RTC_IRQ resource assumptions.
|
||||
|
||||
Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
|
||||
Acked-by: Rafael J. Wysocki <rjw@sisk.pl>
|
||||
Acked-by: David Brownell <dbrownell@users.sourceforge.net>
|
||||
Reported-by: Rik Theys <rik.theys@esat.kuleuven.be>
|
||||
Reported-by: shr_msn@yahoo.com.tw
|
||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
---
|
||||
|
||||
diff --git a/arch/x86/kernel/rtc.c b/arch/x86/kernel/rtc.c
|
||||
index 05191bb..0a23b57 100644
|
||||
--- a/arch/x86/kernel/rtc.c
|
||||
+++ b/arch/x86/kernel/rtc.c
|
||||
@@ -223,11 +223,25 @@ static struct platform_device rtc_device = {
|
||||
static __init int add_rtc_cmos(void)
|
||||
{
|
||||
#ifdef CONFIG_PNP
|
||||
- if (!pnp_platform_devices)
|
||||
- platform_device_register(&rtc_device);
|
||||
-#else
|
||||
+ static const char *ids[] __initconst =
|
||||
+ { "PNP0b00", "PNP0b01", "PNP0b02", };
|
||||
+ struct pnp_dev *dev;
|
||||
+ struct pnp_id *id;
|
||||
+ int i;
|
||||
+
|
||||
+ pnp_for_each_dev(dev) {
|
||||
+ for (id = dev->id; id; id = id->next) {
|
||||
+ for (i = 0; i < ARRAY_SIZE(ids); i++) {
|
||||
+ if (compare_pnp_id(id, ids[i]) != 0)
|
||||
+ return 0;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
platform_device_register(&rtc_device);
|
||||
-#endif /* CONFIG_PNP */
|
||||
+ dev_info(&rtc_device.dev,
|
||||
+ "registered platform RTC device (no PNP device found)\n");
|
||||
return 0;
|
||||
}
|
||||
device_initcall(add_rtc_cmos);
|
||||
|
||||
From: Bjorn Helgaas <bjorn.helgaas@hp.com>
|
||||
Date: Tue, 14 Oct 2008 23:01:59 +0000 (-0600)
|
||||
Subject: rtc-cmos: look for PNP RTC first, then for platform RTC
|
||||
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=72f22b1eb6ca5e4676a632a04d40d46cb61d4562
|
||||
|
||||
rtc-cmos: look for PNP RTC first, then for platform RTC
|
||||
|
||||
We shouldn't rely on "pnp_platform_devices" to tell us whether there
|
||||
is a PNP RTC device.
|
||||
|
||||
I introduced "pnp_platform_devices", but I think it was a mistake.
|
||||
All it tells us is whether we found any PNPBIOS or PNPACPI devices.
|
||||
Many machines have some PNP devices, but do not describe the RTC
|
||||
via PNP. On those machines, we need to do the platform driver probe
|
||||
to find the RTC.
|
||||
|
||||
We should just register the PNP driver and see whether it claims anything.
|
||||
If we don't find a PNP RTC, fall back to the platform driver probe.
|
||||
|
||||
This (in conjunction with the arch/x86/kernel/rtc.c patch to add
|
||||
a platform RTC device when PNP doesn't have one) should resolve
|
||||
these issues:
|
||||
|
||||
http://bugzilla.kernel.org/show_bug.cgi?id=11580
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=451188
|
||||
|
||||
Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
|
||||
Acked-by: Rafael J. Wysocki <rjw@sisk.pl>
|
||||
Acked-by: David Brownell <dbrownell@users.sourceforge.net>
|
||||
Reported-by: Rik Theys <rik.theys@esat.kuleuven.be>
|
||||
Reported-by: shr_msn@yahoo.com.tw
|
||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
---
|
||||
|
||||
diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c
|
||||
index 6778f82..963ad0b 100644
|
||||
--- a/drivers/rtc/rtc-cmos.c
|
||||
+++ b/drivers/rtc/rtc-cmos.c
|
||||
@@ -1120,29 +1120,32 @@ static struct platform_driver cmos_platform_driver = {
|
||||
|
||||
static int __init cmos_init(void)
|
||||
{
|
||||
+ int retval = 0;
|
||||
+
|
||||
#ifdef CONFIG_PNP
|
||||
- if (pnp_platform_devices)
|
||||
- return pnp_register_driver(&cmos_pnp_driver);
|
||||
- else
|
||||
- return platform_driver_probe(&cmos_platform_driver,
|
||||
- cmos_platform_probe);
|
||||
-#else
|
||||
- return platform_driver_probe(&cmos_platform_driver,
|
||||
- cmos_platform_probe);
|
||||
-#endif /* CONFIG_PNP */
|
||||
+ pnp_register_driver(&cmos_pnp_driver);
|
||||
+#endif
|
||||
+
|
||||
+ if (!cmos_rtc.dev)
|
||||
+ retval = platform_driver_probe(&cmos_platform_driver,
|
||||
+ cmos_platform_probe);
|
||||
+
|
||||
+ if (retval == 0)
|
||||
+ return 0;
|
||||
+
|
||||
+#ifdef CONFIG_PNP
|
||||
+ pnp_unregister_driver(&cmos_pnp_driver);
|
||||
+#endif
|
||||
+ return retval;
|
||||
}
|
||||
module_init(cmos_init);
|
||||
|
||||
static void __exit cmos_exit(void)
|
||||
{
|
||||
#ifdef CONFIG_PNP
|
||||
- if (pnp_platform_devices)
|
||||
- pnp_unregister_driver(&cmos_pnp_driver);
|
||||
- else
|
||||
- platform_driver_unregister(&cmos_platform_driver);
|
||||
-#else
|
||||
+ pnp_unregister_driver(&cmos_pnp_driver);
|
||||
+#endif
|
||||
platform_driver_unregister(&cmos_platform_driver);
|
||||
-#endif /* CONFIG_PNP */
|
||||
}
|
||||
module_exit(cmos_exit);
|
||||
|
|
@ -1,129 +0,0 @@
|
|||
From: David Brownell <dbrownell@users.sourceforge.net>
|
||||
|
||||
A bugzilla entry (http://bugzilla.kernel.org/show_bug.cgi?id=11580)
|
||||
reports that PNPACPI tables in some HP servers don't list RTC devices.
|
||||
|
||||
Work around that on x86 (ignore ia64, the other user of ACPI) by
|
||||
having ACPI glue check for that case, and if necessary then setting
|
||||
up a platform device and having rtc_cmos use it.
|
||||
|
||||
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
|
||||
---
|
||||
arch/x86/kernel/rtc.c | 13 ++++++++++++-
|
||||
drivers/acpi/glue.c | 14 +++++++++++++-
|
||||
drivers/pnp/core.c | 7 +++++++
|
||||
drivers/rtc/rtc-cmos.c | 4 ++--
|
||||
include/asm-x86/mc146818rtc.h | 5 +++++
|
||||
include/linux/pnp.h | 1 +
|
||||
6 files changed, 40 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/arch/x86/kernel/rtc.c
|
||||
+++ b/arch/x86/kernel/rtc.c
|
||||
@@ -220,10 +220,21 @@ static struct platform_device rtc_device
|
||||
.num_resources = ARRAY_SIZE(rtc_resources),
|
||||
};
|
||||
|
||||
+#ifdef CONFIG_PNP
|
||||
+/* PNPACPI tables sometimes omit the RTC, or are ignored */
|
||||
+struct device *__init add_nonpnp_rtc_cmos(void)
|
||||
+{
|
||||
+ if (!rtc_device.dev.bus)
|
||||
+ platform_device_register(&rtc_device);
|
||||
+ return &rtc_device.dev;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
static __init int add_rtc_cmos(void)
|
||||
{
|
||||
#ifdef CONFIG_PNP
|
||||
- if (!pnp_platform_devices)
|
||||
+ /* sometimes pnpacpi=off */
|
||||
+ if (!pnp_platform_devices && !rtc_device.dev.bus)
|
||||
platform_device_register(&rtc_device);
|
||||
#else
|
||||
platform_device_register(&rtc_device);
|
||||
--- a/drivers/acpi/glue.c
|
||||
+++ b/drivers/acpi/glue.c
|
||||
@@ -338,7 +338,19 @@ static int __init pnp_match(struct devic
|
||||
|
||||
static struct device *__init get_rtc_dev(void)
|
||||
{
|
||||
- return bus_find_device(&pnp_bus_type, NULL, NULL, pnp_match);
|
||||
+ struct device *rtc;
|
||||
+
|
||||
+ /* return RTC from PNPACPI tables */
|
||||
+ rtc = bus_find_device(&pnp_bus_type, NULL, NULL, pnp_match);
|
||||
+
|
||||
+#ifdef ARCH_PNP_RTC_WORKAROUND
|
||||
+ /* cope with buggy PNPACPI tables; seen on some HP DL3x0 servers */
|
||||
+ if (!rtc) {
|
||||
+ pnp_rtc_missing = true;
|
||||
+ rtc = add_nonpnp_rtc_cmos();
|
||||
+ }
|
||||
+#endif
|
||||
+ return rtc;
|
||||
}
|
||||
|
||||
static int __init acpi_rtc_init(void)
|
||||
--- a/drivers/pnp/core.c
|
||||
+++ b/drivers/pnp/core.c
|
||||
@@ -25,10 +25,17 @@ DEFINE_SPINLOCK(pnp_lock);
|
||||
* ACPI or PNPBIOS should tell us about all platform devices, so we can
|
||||
* skip some blind probes. ISAPNP typically enumerates only plug-in ISA
|
||||
* devices, not built-in things like COM ports.
|
||||
+ *
|
||||
+ * Sometimes ACPI tables omit critical devices, assigning them to grab-bag
|
||||
+ * nodes and forcing drivers to use a platform_device node or (yeech!) use
|
||||
+ * poke-at-the-hardware algorithms for device discovery.
|
||||
*/
|
||||
int pnp_platform_devices;
|
||||
EXPORT_SYMBOL(pnp_platform_devices);
|
||||
|
||||
+bool pnp_rtc_missing;
|
||||
+EXPORT_SYMBOL(pnp_rtc_missing);
|
||||
+
|
||||
void *pnp_alloc(long size)
|
||||
{
|
||||
void *result;
|
||||
--- a/drivers/rtc/rtc-cmos.c
|
||||
+++ b/drivers/rtc/rtc-cmos.c
|
||||
@@ -1137,7 +1137,7 @@ static struct platform_driver cmos_platf
|
||||
static int __init cmos_init(void)
|
||||
{
|
||||
#ifdef CONFIG_PNP
|
||||
- if (pnp_platform_devices)
|
||||
+ if (pnp_platform_devices && !pnp_rtc_missing)
|
||||
return pnp_register_driver(&cmos_pnp_driver);
|
||||
else
|
||||
return platform_driver_probe(&cmos_platform_driver,
|
||||
@@ -1152,7 +1152,7 @@ module_init(cmos_init);
|
||||
static void __exit cmos_exit(void)
|
||||
{
|
||||
#ifdef CONFIG_PNP
|
||||
- if (pnp_platform_devices)
|
||||
+ if (pnp_platform_devices && !pnp_rtc_missing)
|
||||
pnp_unregister_driver(&cmos_pnp_driver);
|
||||
else
|
||||
platform_driver_unregister(&cmos_platform_driver);
|
||||
--- a/include/asm-x86/mc146818rtc.h
|
||||
+++ b/include/asm-x86/mc146818rtc.h
|
||||
@@ -101,4 +101,9 @@ extern unsigned long mach_get_cmos_time(
|
||||
|
||||
#define RTC_IRQ 8
|
||||
|
||||
+#ifdef CONFIG_PNP
|
||||
+#define ARCH_PNP_RTC_WORKAROUND
|
||||
+extern struct device *add_nonpnp_rtc_cmos(void);
|
||||
+#endif
|
||||
+
|
||||
#endif /* _ASM_MC146818RTC_H */
|
||||
--- a/include/linux/pnp.h
|
||||
+++ b/include/linux/pnp.h
|
||||
@@ -420,6 +420,7 @@ int pnp_device_attach(struct pnp_dev *pn
|
||||
void pnp_device_detach(struct pnp_dev *pnp_dev);
|
||||
extern struct list_head pnp_global;
|
||||
extern int pnp_platform_devices;
|
||||
+extern bool pnp_rtc_missing;
|
||||
|
||||
/* multidevice card support */
|
||||
struct pnp_dev *pnp_request_card_device(struct pnp_card_link *clink,
|
|
@ -1,48 +0,0 @@
|
|||
#
|
||||
# Mkvmlinuz support patch, called by debian's kernel-package to generate
|
||||
# the files needed by mkvmlinuz to generate the bootable images from vmlinux.
|
||||
# Author: Sven Luther <luther@debian.org>
|
||||
# Based on work from: Jens Schmalzing <jensen@debian.org>
|
||||
# Original comment from Jens :
|
||||
# This shell script is intended to be put into the debian subdirectory
|
||||
# of a Linux kernel tree, where make-kpkg will find and execute it
|
||||
# while building a kernel-image package. The purpose of this script
|
||||
# is to add glue (object code, libraries, utilities and so on) from
|
||||
# the kernel tree to the kernel-image package. Later, the mkvmlinuz
|
||||
# utility, which is available as a separate Debian package, can use
|
||||
# this glue to create a bootable compressed kernel from the
|
||||
# uncompressed kernel in the kernel-image package and optionally a
|
||||
# ramdisk. This is especially important on PowerPC subarchitectures
|
||||
# that don't have a boot loader, but also comes handy for rescue
|
||||
# systems and the like.
|
||||
# Upstream status: well, this is a debian specific hack, it would be nice
|
||||
# if it was going upstream, but probably not in this form.
|
||||
#
|
||||
--- linux-kernel-2.6.12-2.6.12/arch/ppc/boot/Makefile.orig 2005-07-15 12:46:28.000000000 +0000
|
||||
+++ linux-kernel-2.6.12-2.6.12/arch/ppc/boot/Makefile 2005-07-15 12:55:56.000000000 +0000
|
||||
@@ -32,3 +32,25 @@
|
||||
$(bootdir-y): $(addprefix $(obj)/,$(subdir-y)) \
|
||||
$(addprefix $(obj)/,$(hostprogs-y))
|
||||
$(Q)$(MAKE) $(build)=$(obj)/$@ $(MAKECMDGOALS)
|
||||
+
|
||||
+mkvmlinuz_support_install:
|
||||
+ # mkvmlinuz support, based on work done originally by Jens Schmalzing <jensen@debian.org>
|
||||
+ mkdir -p $(INSTALL_MKVMLINUZ)/boot
|
||||
+ install -m 644 ld.script $(INSTALL_MKVMLINUZ)/boot
|
||||
+
|
||||
+ mkdir -p $(INSTALL_MKVMLINUZ)/lib
|
||||
+ install -m 644 ../../../lib/lib.a $(INSTALL_MKVMLINUZ)/lib
|
||||
+ install -m 644 lib/lib.a $(INSTALL_MKVMLINUZ)/lib/ppc.a
|
||||
+ install -m 644 common/lib.a $(INSTALL_MKVMLINUZ)/lib/common.a
|
||||
+ if [ -e of1275/lib.a ]; then \
|
||||
+ install -m 644 of1275/lib.a $(INSTALL_MKVMLINUZ)/lib/of.a; \
|
||||
+ fi
|
||||
+
|
||||
+ mkdir -p $(INSTALL_MKVMLINUZ)/obj/simple
|
||||
+ install -m 644 simple/*.o $(INSTALL_MKVMLINUZ)/obj/simple
|
||||
+ rm -f $(INSTALL_MKVMLINUZ)/obj/simple/image*.o
|
||||
+
|
||||
+ mkdir -p $(INSTALL_MKVMLINUZ)/utils
|
||||
+ install -m 755 utils/mkbugboot $(INSTALL_MKVMLINUZ)/utils
|
||||
+ install -m 755 utils/mkprep $(INSTALL_MKVMLINUZ)/utils
|
||||
+ install -m 755 utils/mktree $(INSTALL_MKVMLINUZ)/utils
|
|
@ -1,11 +0,0 @@
|
|||
--- linux-source-2.6.26/drivers/misc/hpilo.c~ 2008-08-06 13:22:32.000000000 -0600
|
||||
+++ linux-source-2.6.26/drivers/misc/hpilo.c 2008-08-06 13:22:42.000000000 -0600
|
||||
@@ -688,7 +688,7 @@
|
||||
for (minor = 0 ; minor < MAX_CCB; minor++) {
|
||||
struct device *dev;
|
||||
dev = device_create(ilo_class, &pdev->dev,
|
||||
- MKDEV(ilo_major, minor), NULL,
|
||||
+ MKDEV(ilo_major, minor),
|
||||
"hpilo!d%dccb%d", devnum, minor);
|
||||
if (IS_ERR(dev))
|
||||
dev_err(&pdev->dev, "Could not create files\n");
|
Loading…
Reference in New Issue