int cfs_get_environ(const char *key, char *value, int *val_len)
{
struct mm_struct *mm;
- char *buffer, *tmp_buf = NULL;
+ char *buffer;
int buf_len = PAGE_CACHE_SIZE;
int key_len = strlen(key);
unsigned long addr;
* which is already holding mmap_sem for writes. If some other
* thread gets the write lock in the meantime, this thread will
* block, but at least it won't deadlock on itself. LU-1735 */
- if (down_read_trylock(&mm->mmap_sem) == 0)
+ if (down_read_trylock(&mm->mmap_sem) == 0) {
+ kfree(buffer);
return -EDEADLK;
+ }
up_read(&mm->mmap_sem);
addr = mm->env_start;
out:
mmput(mm);
kfree((void *)buffer);
- if (tmp_buf)
- kfree((void *)tmp_buf);
return rc;
}
EXPORT_SYMBOL(cfs_get_environ);