Re: [patch 1/3] efivars driver update and move

From: Matt Domsch
Date: Mon Apr 26 2004 - 14:02:07 EST


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.

Compiled, tested with efibootmgr-0.5.0-test3. The anomolies I noted
late Friday night are resolved by this kernel patch - efibootmgr was
actually testing the values returned by writes.

--
Matt Domsch
Sr. Software Engineer, Lead Engineer
Dell Linux Solutions linux.dell.com & www.dell.com/linux
Linux on Dell mailing lists @ http://lists.us.dell.com

--- linux-2.6.5.orig/drivers/firmware/efivars.c 2004-04-24 06:58:08.000000000 -0400
+++ linux-2.6.5/drivers/firmware/efivars.c 2004-04-27 03:48:33.037318467 -0400
@@ -1,7 +1,7 @@
/*
* EFI Variables - efivars.c
*
- * Copyright (C) 2001,2003 Dell <Matt_Domsch@xxxxxxxx>
+ * Copyright (C) 2001,2003,2004 Dell <Matt_Domsch@xxxxxxxx>
* Copyright (C) 2004 Intel Corporation <matthew.e.tolentino@xxxxxxxxx>
*
* This code takes all variables accessible from EFI runtime and
@@ -23,6 +23,9 @@
*
* Changelog:
*
+ * 26 Apr 2004 - Matt Domsch <Matt_Domsch@xxxxxxxx>
+ * minor bug fixes
+ *
* 21 Apr 2004 - Matt Tolentino <matthew.e.tolentino@xxxxxxxxx)
* converted driver to export variable information via sysfs
* and moved to drivers/firmware directory
@@ -78,7 +81,7 @@ MODULE_AUTHOR("Matt Domsch <Matt_Domsch@
MODULE_DESCRIPTION("sysfs interface to EFI Variables");
MODULE_LICENSE("GPL");

-#define EFIVARS_VERSION "0.07 2003-Aug-29"
+#define EFIVARS_VERSION "0.07 2004-Apr-26"

/*
* efivars_lock protects two things:
@@ -408,7 +411,7 @@ static struct kobj_type ktype_efivar = {
static ssize_t
dummy(struct subsystem *sub, char *buf)
{
- return 0;
+ return -ENODEV;
}

static inline void
@@ -472,7 +475,10 @@ efivar_create(struct subsystem *sub, con
/* Create the entry in sysfs. Locking is not required here */
status = efivar_create_sysfs_entry(utf8_strsize(new_var->VariableName,
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
@@ -532,7 +538,7 @@ efivar_delete(struct subsystem *sub, con
efivar_unregister(search_efivar);

/* It's dead Jim.... */
- return status;
+ return count;
}

static VAR_SUBSYS_ATTR(new_var, 0200, dummy, efivar_create);

Attachment: pgp00000.pgp
Description: PGP signature