mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
Check for allocation error
return ENOMEM when malloc fails.
This commit is contained in:
parent
ce1c28af19
commit
f9467799c1
@ -1,5 +1,6 @@
|
||||
Version 2.02.94 -
|
||||
====================================
|
||||
Check for allocation failure in hold_lock() in clvmd.
|
||||
Use set_lv() (wipe initial 4KiB) for non zeroed thin volume.
|
||||
Allow cluster mirrors to handle the absence of the checkpoint lib (libSaCkpt).
|
||||
Revert free of allocated segtype in init segment error path (2.02.89).
|
||||
|
@ -167,11 +167,15 @@ static struct lv_info *lookup_info(const char *resource)
|
||||
return lvi;
|
||||
}
|
||||
|
||||
static void insert_info(const char *resource, struct lv_info *lvi)
|
||||
static int insert_info(const char *resource, struct lv_info *lvi)
|
||||
{
|
||||
int ret;
|
||||
|
||||
pthread_mutex_lock(&lv_hash_lock);
|
||||
dm_hash_insert(lv_hash, resource, lvi);
|
||||
ret = dm_hash_insert(lv_hash, resource, lvi);
|
||||
pthread_mutex_unlock(&lv_hash_lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void remove_info(const char *resource)
|
||||
@ -277,8 +281,10 @@ static int hold_lock(char *resource, int mode, int flags)
|
||||
errno = saved_errno;
|
||||
} else {
|
||||
lvi = malloc(sizeof(struct lv_info));
|
||||
if (!lvi)
|
||||
if (!lvi) {
|
||||
errno = ENOMEM;
|
||||
return -1;
|
||||
}
|
||||
|
||||
lvi->lock_mode = mode;
|
||||
status = sync_lock(resource, mode, flags & ~LCKF_CONVERT, &lvi->lock_id);
|
||||
@ -288,7 +294,10 @@ static int hold_lock(char *resource, int mode, int flags)
|
||||
DEBUGLOG("hold_lock. lock at %d failed: %s\n", mode,
|
||||
strerror(errno));
|
||||
} else
|
||||
insert_info(resource, lvi);
|
||||
if (!insert_info(resource, lvi)) {
|
||||
errno = ENOMEM;
|
||||
return -1;
|
||||
}
|
||||
|
||||
errno = saved_errno;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user