libcamera: ipc_unixsocket: Fix file descriptor leak

The file descriptor created for the remote side of the socket is passed
to the forked process, but never closed. Fix the leak.

The fix can be tested by running the unixsocket_ipc unit test under
valgrind with `valgrind --track-fds=yes ./test/ipc/unixsocket_ipc`.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Hirokazu Honda <hiroh@chromium.org>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
Laurent Pinchart
2021-11-29 23:38:28 +02:00
parent 9143668887
commit bf26505dc8

View File

@@ -38,7 +38,7 @@ IPCPipeUnixSocket::IPCPipeUnixSocket(const char *ipaModulePath,
}
socket_->readyRead.connect(this, &IPCPipeUnixSocket::readyRead);
args.push_back(std::to_string(fd.get()));
fds.push_back(fd.release());
fds.push_back(fd.get());
proc_ = std::make_unique<Process>();
int ret = proc_->start(ipaProxyWorkerPath, args, fds);