Fix rtas_flash driver after procfs privatisation changes

Fix errors in the rtas_flash driver after the changes from the procfs
privatisation patchset.

Reported-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
Signed-off-by: David Howells <dhowells@redhat.com>
diff --git a/arch/powerpc/kernel/rtas_flash.c b/arch/powerpc/kernel/rtas_flash.c
index 8196bfba..5b77026 100644
--- a/arch/powerpc/kernel/rtas_flash.c
+++ b/arch/powerpc/kernel/rtas_flash.c
@@ -267,7 +267,7 @@
 	mutex_unlock(&rtas_update_flash_mutex);
 
 	/* Read as text message */
-	len = get_flash_status_msg(uf->status, msg);
+	len = get_flash_status_msg(status, msg);
 	return simple_read_from_buffer(buf, count, ppos, msg, len);
 }
 
@@ -349,13 +349,13 @@
 	fl->blocks[next_free].length = count;
 	fl->num_blocks++;
 out:
-	mutex_lock(&rtas_update_flash_mutex);
+	mutex_unlock(&rtas_update_flash_mutex);
 	return count;
 
 nomem:
 	rc = -ENOMEM;
 error:
-	mutex_lock(&rtas_update_flash_mutex);
+	mutex_unlock(&rtas_update_flash_mutex);
 	return rc;
 }
 
@@ -415,8 +415,10 @@
 			op = RTAS_COMMIT_TMP_IMG;
 	}
 	
-	if (op == -1)   /* buf is empty, or contains invalid string */
-		return -EINVAL;
+	if (op == -1) {   /* buf is empty, or contains invalid string */
+		rc = -EINVAL;
+		goto error;
+	}
 
 	manage_flash(args_buf, op);
 out:
@@ -667,17 +669,17 @@
 		.filename	= "powerpc/rtas/" VALIDATE_FLASH_NAME,
 		.rtas_call_name	= "ibm,validate-flash-image",
 		.status		= &rtas_validate_flash_data.status,
-		.fops.read	= manage_flash_read,
-		.fops.write	= manage_flash_write,
+		.fops.read	= validate_flash_read,
+		.fops.write	= validate_flash_write,
+		.fops.release	= validate_flash_release,
 		.fops.llseek	= default_llseek,
 	},
 	{
 		.filename	= "powerpc/rtas/" MANAGE_FLASH_NAME,
 		.rtas_call_name	= "ibm,manage-flash-image",
 		.status		= &rtas_manage_flash_data.status,
-		.fops.read	= validate_flash_read,
-		.fops.write	= validate_flash_write,
-		.fops.release	= validate_flash_release,
+		.fops.read	= manage_flash_read,
+		.fops.write	= manage_flash_write,
 		.fops.llseek	= default_llseek,
 	}
 };