mirror of
https://gitlab.com/cryptsetup/cryptsetup.git
synced 2025-12-16 21:29:59 +01:00
Fix time of check/use Coverity report in cryptsetup-reencrypt.
This commit is contained in:
@@ -348,38 +348,27 @@ static void close_log(struct reenc_ctx *rc)
|
|||||||
|
|
||||||
static int open_log(struct reenc_ctx *rc)
|
static int open_log(struct reenc_ctx *rc)
|
||||||
{
|
{
|
||||||
int flags, create_new;
|
int flags = opt_directio ? O_DIRECT : 0;
|
||||||
struct stat st;
|
|
||||||
|
|
||||||
if (!stat(rc->log_file, &st))
|
rc->log_fd = open(rc->log_file, O_RDWR|O_EXCL|O_CREAT|flags, S_IRUSR|S_IWUSR);
|
||||||
create_new = 0;
|
if (rc->log_fd != -1) {
|
||||||
else if (errno == ENOENT)
|
log_dbg("Created LUKS reencryption log file %s.", rc->log_file);
|
||||||
create_new = 1;
|
} else if (errno == EEXIST) {
|
||||||
else
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
if (create_new) {
|
|
||||||
log_dbg("Creating LUKS reencryption log file %s.", rc->log_file);
|
|
||||||
flags = opt_directio ? O_RDWR|O_CREAT|O_DIRECT : O_RDWR|O_CREAT;
|
|
||||||
rc->log_fd = open(rc->log_file, flags, S_IRUSR|S_IWUSR);
|
|
||||||
if (rc->log_fd == -1)
|
|
||||||
return -EINVAL;
|
|
||||||
} else {
|
|
||||||
log_std(_("Log file %s exists, resuming reencryption.\n"), rc->log_file);
|
log_std(_("Log file %s exists, resuming reencryption.\n"), rc->log_file);
|
||||||
flags = opt_directio ? O_RDWR|O_DIRECT : O_RDWR;
|
rc->log_fd = open(rc->log_file, O_RDWR|flags);
|
||||||
rc->log_fd = open(rc->log_file, flags);
|
|
||||||
if (rc->log_fd == -1)
|
|
||||||
return -EINVAL;
|
|
||||||
rc->in_progress = 1;
|
rc->in_progress = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (rc->log_fd == -1)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
if (posix_memalign((void *)&rc->log_buf, alignment(rc->log_fd), SECTOR_SIZE)) {
|
if (posix_memalign((void *)&rc->log_buf, alignment(rc->log_fd), SECTOR_SIZE)) {
|
||||||
log_err(_("Allocation of aligned memory failed.\n"));
|
log_err(_("Allocation of aligned memory failed.\n"));
|
||||||
close_log(rc);
|
close_log(rc);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (create_new && write_log(rc) < 0) {
|
if (!rc->in_progress && write_log(rc) < 0) {
|
||||||
close_log(rc);
|
close_log(rc);
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user