mirror of
git://sourceware.org/git/lvm2.git
synced 2025-02-24 17:57:48 +03:00
coverity: cleanup related to lvmlockd
A couple missing mutex unlock on error bugs. A bunch of buffer size/termination warnings.
This commit is contained in:
parent
1481125042
commit
6294509cc6
@ -647,6 +647,7 @@ static int add_pollfd(int fd)
|
||||
tmp_pollfd = realloc(pollfd, new_size * sizeof(struct pollfd));
|
||||
if (!tmp_pollfd) {
|
||||
log_error("can't alloc new size %d for pollfd", new_size);
|
||||
pthread_mutex_unlock(&pollfd_mutex);
|
||||
return -ENOMEM;
|
||||
}
|
||||
pollfd = tmp_pollfd;
|
||||
@ -2994,15 +2995,15 @@ static int work_init_lv(struct action *act)
|
||||
{
|
||||
struct lockspace *ls;
|
||||
char ls_name[MAX_NAME+1];
|
||||
char vg_args[MAX_ARGS];
|
||||
char lv_args[MAX_ARGS];
|
||||
char vg_args[MAX_ARGS+1];
|
||||
char lv_args[MAX_ARGS+1];
|
||||
uint64_t free_offset = 0;
|
||||
int lm_type = 0;
|
||||
int rv = 0;
|
||||
|
||||
memset(ls_name, 0, sizeof(ls_name));
|
||||
memset(vg_args, 0, MAX_ARGS);
|
||||
memset(lv_args, 0, MAX_ARGS);
|
||||
memset(vg_args, 0, sizeof(vg_args));
|
||||
memset(lv_args, 0, sizeof(lv_args));
|
||||
|
||||
vg_ls_name(act->vg_name, ls_name);
|
||||
|
||||
@ -3543,6 +3544,7 @@ static int add_lock_action(struct action *act)
|
||||
/* should not happen */
|
||||
log_error("S %s add_lock_action bad lm_type %d ls %d",
|
||||
ls_name, act->lm_type, ls->lm_type);
|
||||
pthread_mutex_unlock(&lockspaces_mutex);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -4622,7 +4624,7 @@ static char *get_dm_uuid(char *dm_name)
|
||||
}
|
||||
|
||||
memset(_dm_uuid, 0, sizeof(_dm_uuid));
|
||||
strcpy(_dm_uuid, uuid);
|
||||
strncpy(_dm_uuid, uuid, sizeof(_dm_uuid)-1);
|
||||
dm_task_destroy(dmt);
|
||||
return _dm_uuid;
|
||||
|
||||
|
@ -112,7 +112,7 @@ static int read_cluster_name(char *clustername)
|
||||
return fd;
|
||||
}
|
||||
|
||||
rv = read(fd, clustername, MAX_ARGS - 1);
|
||||
rv = read(fd, clustername, MAX_ARGS);
|
||||
if (rv < 0) {
|
||||
log_error("read_cluster_name: cluster name read error %d, check dlm_controld", fd);
|
||||
if (close(fd))
|
||||
@ -130,8 +130,8 @@ static int read_cluster_name(char *clustername)
|
||||
|
||||
int lm_init_vg_dlm(char *ls_name, char *vg_name, uint32_t flags, char *vg_args)
|
||||
{
|
||||
char clustername[MAX_ARGS];
|
||||
char lock_args_version[MAX_ARGS];
|
||||
char clustername[MAX_ARGS+1];
|
||||
char lock_args_version[MAX_ARGS+1];
|
||||
int rv;
|
||||
|
||||
memset(clustername, 0, sizeof(clustername));
|
||||
@ -158,8 +158,8 @@ int lm_init_vg_dlm(char *ls_name, char *vg_name, uint32_t flags, char *vg_args)
|
||||
|
||||
int lm_prepare_lockspace_dlm(struct lockspace *ls)
|
||||
{
|
||||
char sys_clustername[MAX_ARGS];
|
||||
char arg_clustername[MAX_ARGS];
|
||||
char sys_clustername[MAX_ARGS+1];
|
||||
char arg_clustername[MAX_ARGS+1];
|
||||
struct lm_dlm *lmd;
|
||||
int rv;
|
||||
|
||||
@ -650,7 +650,7 @@ int lm_get_lockspaces_dlm(struct list_head *ls_rejoin)
|
||||
|
||||
int lm_is_running_dlm(void)
|
||||
{
|
||||
char sys_clustername[MAX_ARGS];
|
||||
char sys_clustername[MAX_ARGS+1];
|
||||
int rv;
|
||||
|
||||
memset(sys_clustername, 0, sizeof(sys_clustername));
|
||||
|
@ -127,8 +127,8 @@ struct action {
|
||||
char vg_name[MAX_NAME+1];
|
||||
char lv_name[MAX_NAME+1];
|
||||
char lv_uuid[MAX_NAME+1];
|
||||
char vg_args[MAX_ARGS];
|
||||
char lv_args[MAX_ARGS];
|
||||
char vg_args[MAX_ARGS+1];
|
||||
char lv_args[MAX_ARGS+1];
|
||||
char vg_sysid[MAX_NAME+1];
|
||||
};
|
||||
|
||||
@ -145,7 +145,7 @@ struct resource {
|
||||
struct list_head locks;
|
||||
struct list_head actions;
|
||||
struct val_blk *vb;
|
||||
char lv_args[MAX_ARGS];
|
||||
char lv_args[MAX_ARGS+1];
|
||||
char lm_data[0]; /* lock manager specific data */
|
||||
};
|
||||
|
||||
@ -164,7 +164,7 @@ struct lockspace {
|
||||
char name[MAX_NAME+1];
|
||||
char vg_name[MAX_NAME+1];
|
||||
char vg_uuid[64];
|
||||
char vg_args[MAX_ARGS]; /* lock manager specific args */
|
||||
char vg_args[MAX_ARGS+1]; /* lock manager specific args */
|
||||
char vg_sysid[MAX_NAME+1];
|
||||
int8_t lm_type; /* lock manager: LM_DLM, LM_SANLOCK */
|
||||
void *lm_data;
|
||||
|
@ -167,7 +167,7 @@ static int lock_lv_name_from_args(char *vg_args, char *lock_lv_name)
|
||||
|
||||
static int lock_lv_offset_from_args(char *lv_args, uint64_t *lock_lv_offset)
|
||||
{
|
||||
char offset_str[MAX_ARGS];
|
||||
char offset_str[MAX_ARGS+1];
|
||||
int rv;
|
||||
|
||||
memset(offset_str, 0, sizeof(offset_str));
|
||||
@ -256,8 +256,8 @@ int lm_init_vg_sanlock(char *ls_name, char *vg_name, uint32_t flags, char *vg_ar
|
||||
struct sanlk_lockspace ss;
|
||||
struct sanlk_resourced rd;
|
||||
struct sanlk_disk disk;
|
||||
char lock_lv_name[MAX_ARGS];
|
||||
char lock_args_version[MAX_ARGS];
|
||||
char lock_lv_name[MAX_ARGS+1];
|
||||
char lock_args_version[MAX_ARGS+1];
|
||||
const char *gl_name = NULL;
|
||||
uint32_t daemon_version;
|
||||
uint32_t daemon_proto;
|
||||
@ -285,7 +285,7 @@ int lm_init_vg_sanlock(char *ls_name, char *vg_name, uint32_t flags, char *vg_ar
|
||||
if (strlen(lock_lv_name) + strlen(lock_args_version) + 2 > MAX_ARGS)
|
||||
return -EARGS;
|
||||
|
||||
snprintf(disk.path, SANLK_PATH_LEN, "/dev/mapper/%s-%s", vg_name, lock_lv_name);
|
||||
snprintf(disk.path, SANLK_PATH_LEN-1, "/dev/mapper/%s-%s", vg_name, lock_lv_name);
|
||||
|
||||
log_debug("S %s init_vg_san path %s", ls_name, disk.path);
|
||||
|
||||
@ -423,8 +423,8 @@ int lm_init_lv_sanlock(char *ls_name, char *vg_name, char *lv_name,
|
||||
char *vg_args, char *lv_args, uint64_t free_offset)
|
||||
{
|
||||
struct sanlk_resourced rd;
|
||||
char lock_lv_name[MAX_ARGS];
|
||||
char lock_args_version[MAX_ARGS];
|
||||
char lock_lv_name[MAX_ARGS+1];
|
||||
char lock_args_version[MAX_ARGS+1];
|
||||
uint64_t offset;
|
||||
int align_size;
|
||||
int rv;
|
||||
@ -445,7 +445,7 @@ int lm_init_lv_sanlock(char *ls_name, char *vg_name, char *lv_name,
|
||||
|
||||
strncpy(rd.rs.lockspace_name, ls_name, SANLK_NAME_LEN);
|
||||
rd.rs.num_disks = 1;
|
||||
snprintf(rd.rs.disks[0].path, SANLK_PATH_LEN, "/dev/mapper/%s-%s", vg_name, lock_lv_name);
|
||||
snprintf(rd.rs.disks[0].path, SANLK_PATH_LEN-1, "/dev/mapper/%s-%s", vg_name, lock_lv_name);
|
||||
|
||||
align_size = sanlock_align(&rd.rs.disks[0]);
|
||||
if (align_size <= 0) {
|
||||
@ -529,7 +529,7 @@ int lm_rename_vg_sanlock(char *ls_name, char *vg_name, uint32_t flags, char *vg_
|
||||
struct sanlk_lockspace ss;
|
||||
struct sanlk_resourced rd;
|
||||
struct sanlk_disk disk;
|
||||
char lock_lv_name[MAX_ARGS];
|
||||
char lock_lv_name[MAX_ARGS+1];
|
||||
uint64_t offset;
|
||||
uint32_t io_timeout;
|
||||
int align_size;
|
||||
@ -550,7 +550,7 @@ int lm_rename_vg_sanlock(char *ls_name, char *vg_name, uint32_t flags, char *vg_
|
||||
return rv;
|
||||
}
|
||||
|
||||
snprintf(disk.path, SANLK_PATH_LEN, "/dev/mapper/%s-%s", vg_name, lock_lv_name);
|
||||
snprintf(disk.path, SANLK_PATH_LEN-1, "/dev/mapper/%s-%s", vg_name, lock_lv_name);
|
||||
|
||||
log_debug("S %s rename_vg_san path %s", ls_name, disk.path);
|
||||
|
||||
@ -730,7 +730,7 @@ int lm_ex_disable_gl_sanlock(struct lockspace *ls)
|
||||
strncpy(rd2.rs.name, R_NAME_GL_DISABLED, SANLK_NAME_LEN);
|
||||
|
||||
rd1.rs.num_disks = 1;
|
||||
strncpy(rd1.rs.disks[0].path, lms->ss.host_id_disk.path, SANLK_PATH_LEN);
|
||||
strncpy(rd1.rs.disks[0].path, lms->ss.host_id_disk.path, SANLK_PATH_LEN-1);
|
||||
rd1.rs.disks[0].offset = lms->align_size * GL_LOCK_BEGIN;
|
||||
|
||||
rv = sanlock_acquire(lms->sock, -1, 0, 1, &rs1, NULL);
|
||||
@ -788,7 +788,7 @@ int lm_able_gl_sanlock(struct lockspace *ls, int enable)
|
||||
strncpy(rd.rs.name, gl_name, SANLK_NAME_LEN);
|
||||
|
||||
rd.rs.num_disks = 1;
|
||||
strncpy(rd.rs.disks[0].path, lms->ss.host_id_disk.path, SANLK_PATH_LEN);
|
||||
strncpy(rd.rs.disks[0].path, lms->ss.host_id_disk.path, SANLK_PATH_LEN-1);
|
||||
rd.rs.disks[0].offset = lms->align_size * GL_LOCK_BEGIN;
|
||||
|
||||
rv = sanlock_write_resource(&rd.rs, 0, 0, 0);
|
||||
@ -827,7 +827,7 @@ static int gl_is_enabled(struct lockspace *ls, struct lm_sanlock *lms)
|
||||
/* leave rs.name empty, it is what we're checking */
|
||||
|
||||
rd.rs.num_disks = 1;
|
||||
strncpy(rd.rs.disks[0].path, lms->ss.host_id_disk.path, SANLK_PATH_LEN);
|
||||
strncpy(rd.rs.disks[0].path, lms->ss.host_id_disk.path, SANLK_PATH_LEN-1);
|
||||
|
||||
offset = lms->align_size * GL_LOCK_BEGIN;
|
||||
rd.rs.disks[0].offset = offset;
|
||||
@ -885,7 +885,7 @@ int lm_find_free_lock_sanlock(struct lockspace *ls, uint64_t *free_offset)
|
||||
|
||||
strncpy(rd.rs.lockspace_name, ls->name, SANLK_NAME_LEN);
|
||||
rd.rs.num_disks = 1;
|
||||
strncpy(rd.rs.disks[0].path, lms->ss.host_id_disk.path, SANLK_PATH_LEN);
|
||||
strncpy(rd.rs.disks[0].path, lms->ss.host_id_disk.path, SANLK_PATH_LEN-1);
|
||||
|
||||
offset = lms->align_size * LV_LOCK_BEGIN;
|
||||
|
||||
@ -960,7 +960,7 @@ int lm_prepare_lockspace_sanlock(struct lockspace *ls)
|
||||
{
|
||||
struct stat st;
|
||||
struct lm_sanlock *lms = NULL;
|
||||
char lock_lv_name[MAX_ARGS];
|
||||
char lock_lv_name[MAX_ARGS+1];
|
||||
char lsname[SANLK_NAME_LEN + 1];
|
||||
char disk_path[SANLK_PATH_LEN];
|
||||
int gl_found;
|
||||
@ -983,7 +983,7 @@ int lm_prepare_lockspace_sanlock(struct lockspace *ls)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
snprintf(disk_path, SANLK_PATH_LEN, "/dev/mapper/%s-%s",
|
||||
snprintf(disk_path, SANLK_PATH_LEN-1, "/dev/mapper/%s-%s",
|
||||
ls->vg_name, lock_lv_name);
|
||||
|
||||
/*
|
||||
@ -1035,7 +1035,7 @@ int lm_prepare_lockspace_sanlock(struct lockspace *ls)
|
||||
memcpy(lms->ss.name, lsname, SANLK_NAME_LEN);
|
||||
lms->ss.host_id_disk.offset = 0;
|
||||
lms->ss.host_id = ls->host_id;
|
||||
strncpy(lms->ss.host_id_disk.path, disk_path, SANLK_PATH_LEN);
|
||||
strncpy(lms->ss.host_id_disk.path, disk_path, SANLK_PATH_LEN-1);
|
||||
|
||||
if (daemon_test) {
|
||||
if (!gl_lsname_sanlock[0]) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user