mcexec: propagate error in __NR_gettid handler
Change-Id: I0e0f06199970fe839065567dcd5418d017b6ec00
This commit is contained in:
committed by
Masamichi Takagi
parent
3d71c6a8eb
commit
4905c8e638
@@ -4123,6 +4123,7 @@ int main_loop(struct thread_data_s *my_thread)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
case __NR_gettid:{
|
case __NR_gettid:{
|
||||||
|
int rc = 0;
|
||||||
/*
|
/*
|
||||||
* Number of TIDs and the remote physical address where TIDs are
|
* Number of TIDs and the remote physical address where TIDs are
|
||||||
* expected are passed in arg 4 and 5, respectively.
|
* expected are passed in arg 4 and 5, respectively.
|
||||||
@@ -4134,6 +4135,7 @@ int main_loop(struct thread_data_s *my_thread)
|
|||||||
int *tids = malloc(sizeof(int) * w.sr.args[4]);
|
int *tids = malloc(sizeof(int) * w.sr.args[4]);
|
||||||
if (!tids) {
|
if (!tids) {
|
||||||
fprintf(stderr, "__NR_gettid(): error allocating TIDs\n");
|
fprintf(stderr, "__NR_gettid(): error allocating TIDs\n");
|
||||||
|
rc = -ENOMEM;
|
||||||
goto gettid_out;
|
goto gettid_out;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4154,13 +4156,14 @@ int main_loop(struct thread_data_s *my_thread)
|
|||||||
trans.direction = MCEXEC_UP_TRANSFER_TO_REMOTE;
|
trans.direction = MCEXEC_UP_TRANSFER_TO_REMOTE;
|
||||||
|
|
||||||
if (ioctl(fd, MCEXEC_UP_TRANSFER, &trans) != 0) {
|
if (ioctl(fd, MCEXEC_UP_TRANSFER, &trans) != 0) {
|
||||||
|
rc = -EFAULT;
|
||||||
fprintf(stderr, "__NR_gettid(): error transfering TIDs\n");
|
fprintf(stderr, "__NR_gettid(): error transfering TIDs\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
free(tids);
|
free(tids);
|
||||||
}
|
}
|
||||||
gettid_out:
|
gettid_out:
|
||||||
do_syscall_return(fd, cpu, 0, 0, 0, 0, 0);
|
do_syscall_return(fd, cpu, rc, 0, 0, 0, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user