btrfs-progs: resst info->periodic.timer_fd's value after free
task_period_stop() is used to close a timer explicitly, to avoid the timer handle closed again by task_stop(), we should reset its value after close. Also add value-reset for info->id for safe. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
867352bad9
commit
f156337dc8
|
@ -64,10 +64,13 @@ void task_stop(struct task_info *info)
|
|||
if (info->id > 0) {
|
||||
pthread_cancel(info->id);
|
||||
pthread_join(info->id, NULL);
|
||||
info->id = -1;
|
||||
}
|
||||
|
||||
if (info->periodic.timer_fd)
|
||||
if (info->periodic.timer_fd) {
|
||||
close(info->periodic.timer_fd);
|
||||
info->periodic.timer_fd = 0;
|
||||
}
|
||||
|
||||
if (info->postfn)
|
||||
info->postfn(info->private_data);
|
||||
|
@ -130,5 +133,6 @@ void task_period_stop(struct task_info *info)
|
|||
if (info->periodic.timer_fd) {
|
||||
timerfd_settime(info->periodic.timer_fd, 0, NULL, NULL);
|
||||
close(info->periodic.timer_fd);
|
||||
info->periodic.timer_fd = -1;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue