diff options
Diffstat (limited to 'fs/pstore/platform.c')
| -rw-r--r-- | fs/pstore/platform.c | 12 | 
1 files changed, 9 insertions, 3 deletions
diff --git a/fs/pstore/platform.c b/fs/pstore/platform.c index f835a25625ff..f2c3ff20ea68 100644 --- a/fs/pstore/platform.c +++ b/fs/pstore/platform.c @@ -152,21 +152,27 @@ EXPORT_SYMBOL_GPL(pstore_register);  void pstore_get_records(void)  {  	struct pstore_info *psi = psinfo; -	size_t			size; +	ssize_t			size;  	u64			id;  	enum pstore_type_id	type;  	struct timespec		time; -	int			failed = 0; +	int			failed = 0, rc;  	if (!psi)  		return;  	mutex_lock(&psinfo->buf_mutex); +	rc = psi->open(psi); +	if (rc) +		goto out; +  	while ((size = psi->read(&id, &type, &time)) > 0) { -		if (pstore_mkfile(type, psi->name, id, psi->buf, size, +		if (pstore_mkfile(type, psi->name, id, psi->buf, (size_t)size,  				  time, psi->erase))  			failed++;  	} +	psi->close(psi); +out:  	mutex_unlock(&psinfo->buf_mutex);  	if (failed)  |