Commit 03d1c495 authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] efivars fixes

From: Matt Domsch <Matt_Domsch@dell.com>

Patch below fixes three small bugs in efivars.c as posted by Matt Tolentino
last week and included in the latest -mm.  Aside from this small patch, I'm
quite pleased with Matt T's work, thanks!

- dummy() used for reading write-only sysfs files should return -ENODEV to
  indicate failure, not 0.

- efivar_create() should return the number of bytes written on success, not
  zero.

- efivar_delete() should return the number of bytes written on success, not
  zero.
parent 1079344c
/* /*
* EFI Variables - efivars.c * EFI Variables - efivars.c
* *
* Copyright (C) 2001,2003 Dell <Matt_Domsch@dell.com> * Copyright (C) 2001,2003,2004 Dell <Matt_Domsch@dell.com>
* Copyright (C) 2004 Intel Corporation <matthew.e.tolentino@intel.com> * Copyright (C) 2004 Intel Corporation <matthew.e.tolentino@intel.com>
* *
* This code takes all variables accessible from EFI runtime and * This code takes all variables accessible from EFI runtime and
...@@ -23,6 +23,9 @@ ...@@ -23,6 +23,9 @@
* *
* Changelog: * Changelog:
* *
* 26 Apr 2004 - Matt Domsch <Matt_Domsch@dell.com>
* minor bug fixes
*
* 21 Apr 2004 - Matt Tolentino <matthew.e.tolentino@intel.com) * 21 Apr 2004 - Matt Tolentino <matthew.e.tolentino@intel.com)
* converted driver to export variable information via sysfs * converted driver to export variable information via sysfs
* and moved to drivers/firmware directory * and moved to drivers/firmware directory
...@@ -78,7 +81,7 @@ MODULE_AUTHOR("Matt Domsch <Matt_Domsch@Dell.com>"); ...@@ -78,7 +81,7 @@ MODULE_AUTHOR("Matt Domsch <Matt_Domsch@Dell.com>");
MODULE_DESCRIPTION("sysfs interface to EFI Variables"); MODULE_DESCRIPTION("sysfs interface to EFI Variables");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
#define EFIVARS_VERSION "0.07 2003-Aug-29" #define EFIVARS_VERSION "0.07 2004-Apr-26"
/* /*
* efivars_lock protects two things: * efivars_lock protects two things:
...@@ -408,7 +411,7 @@ static struct kobj_type ktype_efivar = { ...@@ -408,7 +411,7 @@ static struct kobj_type ktype_efivar = {
static ssize_t static ssize_t
dummy(struct subsystem *sub, char *buf) dummy(struct subsystem *sub, char *buf)
{ {
return 0; return -ENODEV;
} }
static inline void static inline void
...@@ -472,7 +475,10 @@ efivar_create(struct subsystem *sub, const char *buf, size_t count) ...@@ -472,7 +475,10 @@ efivar_create(struct subsystem *sub, const char *buf, size_t count)
/* Create the entry in sysfs. Locking is not required here */ /* Create the entry in sysfs. Locking is not required here */
status = efivar_create_sysfs_entry(utf8_strsize(new_var->VariableName, status = efivar_create_sysfs_entry(utf8_strsize(new_var->VariableName,
1024), new_var->VariableName, &new_var->VendorGuid); 1024), new_var->VariableName, &new_var->VendorGuid);
return status; if (status) {
printk(KERN_WARNING "efivars: variable created, but sysfs entry wasn't.\n");
}
return count;
} }
static ssize_t static ssize_t
...@@ -532,7 +538,7 @@ efivar_delete(struct subsystem *sub, const char *buf, size_t count) ...@@ -532,7 +538,7 @@ efivar_delete(struct subsystem *sub, const char *buf, size_t count)
efivar_unregister(search_efivar); efivar_unregister(search_efivar);
/* It's dead Jim.... */ /* It's dead Jim.... */
return status; return count;
} }
static VAR_SUBSYS_ATTR(new_var, 0200, dummy, efivar_create); static VAR_SUBSYS_ATTR(new_var, 0200, dummy, efivar_create);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment