diff options
Diffstat (limited to 'gitlab/issues_text/target_missing/host_missing/accel_missing/2197')
| -rw-r--r-- | gitlab/issues_text/target_missing/host_missing/accel_missing/2197 | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/gitlab/issues_text/target_missing/host_missing/accel_missing/2197 b/gitlab/issues_text/target_missing/host_missing/accel_missing/2197 deleted file mode 100644 index 789c6a254..000000000 --- a/gitlab/issues_text/target_missing/host_missing/accel_missing/2197 +++ /dev/null @@ -1,58 +0,0 @@ -qemu user space emulator handles syscall `setsockopt()` with `optlen=0` incorrectly -Description of problem: -Note that despite I have only tested with the parameters/environments above, this problem probably **affects ALL architectures on Linux**. - -When user program calls `setsockopt(fd, SOL_ALG, ALG_SET_KEY, NULL, 0)`, qemu intercepts the syscall and returns `-1` with `errno = ENOMEM`, which should have completed successfully returning zero. -Steps to reproduce: -1. compile this code to binary executable: -```c -#include <unistd.h> -#include <sys/types.h> -#include <sys/socket.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <linux/if_alg.h> - -int create_alg(const char *alg) -{ - struct sockaddr_alg salg; - int sk; - - sk = socket(PF_ALG, SOCK_SEQPACKET | SOCK_CLOEXEC, 0); - if (sk < 0) - return -1; - - memset(&salg, 0, sizeof(salg)); - salg.salg_family = AF_ALG; - strcpy((char *) salg.salg_type, "hash"); - strcpy((char *) salg.salg_name, alg); - - if (bind(sk, (struct sockaddr *) &salg, sizeof(salg)) < 0) { - close(sk); - return -1; - } - - return sk; -} - -int main() { - int fd = create_alg("hmac(sha1)"); - char buf[10]; - int ret = setsockopt(fd, SOL_ALG, ALG_SET_KEY, NULL, 0); - if(ret < 0){ - perror("err"); - } - else{ - puts("SUCCESS!"); - } - return 0; -} -``` -2. run it in any qemu user space emulator - -On real Linux kernel, this program outputs a `SUCCESS!` while in qemu it prints `err: Cannot allocate memory`. - -The error is neither informative nor intuitive and could be misleading for user programs. -Additional information: -I already have a patch which fixes the issue and I'm willing to send it to mailing list as soon as I have done the testing. |