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
|
||||
|
||||
case __NR_gettid:{
|
||||
int rc = 0;
|
||||
/*
|
||||
* Number of TIDs and the remote physical address where TIDs are
|
||||
* 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]);
|
||||
if (!tids) {
|
||||
fprintf(stderr, "__NR_gettid(): error allocating TIDs\n");
|
||||
rc = -ENOMEM;
|
||||
goto gettid_out;
|
||||
}
|
||||
|
||||
@@ -4154,13 +4156,14 @@ int main_loop(struct thread_data_s *my_thread)
|
||||
trans.direction = MCEXEC_UP_TRANSFER_TO_REMOTE;
|
||||
|
||||
if (ioctl(fd, MCEXEC_UP_TRANSFER, &trans) != 0) {
|
||||
rc = -EFAULT;
|
||||
fprintf(stderr, "__NR_gettid(): error transfering TIDs\n");
|
||||
}
|
||||
|
||||
free(tids);
|
||||
}
|
||||
gettid_out:
|
||||
do_syscall_return(fd, cpu, 0, 0, 0, 0, 0);
|
||||
do_syscall_return(fd, cpu, rc, 0, 0, 0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user