I built a Xenial test kernel with this commit reverted. I confirmed this test kernel resolves the bug on my setup. It would be great if others can test this kernel to confirm it resolves the bug. It can be downloaded from:
http://kernel.ubuntu.com/~jsalisbury/lp1540731/Commit3822b5cReverted/ Note, with this test kernel, you need to install both the linux-image and linux-image-extra .deb packages. If it is confirmed reverting this commit solves the bug, I will ping upstream and have this commit reverted or fixed. -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to linux in Ubuntu. https://bugs.launchpad.net/bugs/1540731 Title: SocketMessenger::update_session_creds() fails to get client PID, causing "[ FAILED ] PromptSessionClientAPI.client_pid_is_associated_with_session" on kernel 4.4 (but kernel 4.3 works) Status in GLibC: New Status in Mir: Confirmed Status in linux package in Ubuntu: In Progress Bug description: Since updating to the 4.4.0-2 kernel recvmsg() fails SCM_CREDENTIALS request with EOPNOTSUPP. This manifests as a test failure in Mir: [ RUN ] PromptSessionClientAPI.client_pid_is_associated_with_session unknown file: Failure Test case: #include <stdlib.h> #include <stdio.h> #include <sys/socket.h> #include <sys/stat.h> #include <assert.h> #include <errno.h> #include <string.h> int main() { enum { server, client, size }; int socket_fd[size]; int const opt = 1; assert(socketpair(AF_LOCAL, SOCK_STREAM, 0, socket_fd) == 0); char const msg[] = "A random message"; send(socket_fd[client], msg, sizeof msg, MSG_DONTWAIT | MSG_NOSIGNAL); assert(setsockopt(socket_fd[server], SOL_SOCKET, SO_PASSCRED, &opt, sizeof(opt)) != -1); union { struct cmsghdr cmh; char control[CMSG_SPACE(sizeof(ucred))]; } control_un; control_un.cmh.cmsg_len = CMSG_LEN(sizeof(ucred)); control_un.cmh.cmsg_level = SOL_SOCKET; control_un.cmh.cmsg_type = SCM_CREDENTIALS; msghdr msgh; msgh.msg_name = NULL; msgh.msg_namelen = 0; msgh.msg_iov = NULL; msgh.msg_iovlen = 0; msgh.msg_control = control_un.control; msgh.msg_controllen = sizeof(control_un.control); errno = 0; if (recvmsg(socket_fd[server], &msgh, MSG_PEEK) == -1) { printf("Error: %s\n", strerror(errno)); exit(EXIT_FAILURE); } else { printf("Success!\n"); exit(EXIT_SUCCESS); } } To manage notifications about this bug go to: https://bugs.launchpad.net/glibc/+bug/1540731/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : [email protected] Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp

