mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-03 05:18:29 +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 -
|
Version 2.02.94 -
|
||||||
====================================
|
====================================
|
||||||
|
Check for allocation failure in hold_lock() in clvmd.
|
||||||
Use set_lv() (wipe initial 4KiB) for non zeroed thin volume.
|
Use set_lv() (wipe initial 4KiB) for non zeroed thin volume.
|
||||||
Allow cluster mirrors to handle the absence of the checkpoint lib (libSaCkpt).
|
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).
|
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;
|
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);
|
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);
|
pthread_mutex_unlock(&lv_hash_lock);
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void remove_info(const char *resource)
|
static void remove_info(const char *resource)
|
||||||
@ -277,8 +281,10 @@ static int hold_lock(char *resource, int mode, int flags)
|
|||||||
errno = saved_errno;
|
errno = saved_errno;
|
||||||
} else {
|
} else {
|
||||||
lvi = malloc(sizeof(struct lv_info));
|
lvi = malloc(sizeof(struct lv_info));
|
||||||
if (!lvi)
|
if (!lvi) {
|
||||||
|
errno = ENOMEM;
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
lvi->lock_mode = mode;
|
lvi->lock_mode = mode;
|
||||||
status = sync_lock(resource, mode, flags & ~LCKF_CONVERT, &lvi->lock_id);
|
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,
|
DEBUGLOG("hold_lock. lock at %d failed: %s\n", mode,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
} else
|
} else
|
||||||
insert_info(resource, lvi);
|
if (!insert_info(resource, lvi)) {
|
||||||
|
errno = ENOMEM;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
errno = saved_errno;
|
errno = saved_errno;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user