summaryrefslogtreecommitdiff
path: root/Kernel
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2021-09-15 21:09:47 +0200
committerAndreas Kling <kling@serenityos.org>2021-09-15 21:09:47 +0200
commitb6efd66d563a2d378e6b40a313c1b50808f78f0d (patch)
tree02793f3f8202944148125dbc0562dbc7a27cf430 /Kernel
parent422d725c79fdb95ff67292e1d6a04a6518d277ff (diff)
downloadserenity-b6efd66d563a2d378e6b40a313c1b50808f78f0d.zip
Kernel: Use move semantics in sys$sendfd()
Avoid an unnecessary NonnullRefPtr<OpenFileDescription> copy.
Diffstat (limited to 'Kernel')
-rw-r--r--Kernel/Net/LocalSocket.cpp2
-rw-r--r--Kernel/Net/LocalSocket.h2
-rw-r--r--Kernel/Syscalls/sendfd.cpp4
3 files changed, 4 insertions, 4 deletions
diff --git a/Kernel/Net/LocalSocket.cpp b/Kernel/Net/LocalSocket.cpp
index a6c7fb976e..f5dc0cc9f4 100644
--- a/Kernel/Net/LocalSocket.cpp
+++ b/Kernel/Net/LocalSocket.cpp
@@ -466,7 +466,7 @@ NonnullRefPtrVector<OpenFileDescription>& LocalSocket::sendfd_queue_for(const Op
VERIFY_NOT_REACHED();
}
-KResult LocalSocket::sendfd(const OpenFileDescription& socket_description, OpenFileDescription& passing_description)
+KResult LocalSocket::sendfd(OpenFileDescription const& socket_description, NonnullRefPtr<OpenFileDescription> passing_description)
{
MutexLocker locker(mutex());
auto role = this->role(socket_description);
diff --git a/Kernel/Net/LocalSocket.h b/Kernel/Net/LocalSocket.h
index 96e0322f6b..f1327944e0 100644
--- a/Kernel/Net/LocalSocket.h
+++ b/Kernel/Net/LocalSocket.h
@@ -26,7 +26,7 @@ public:
static KResultOr<SocketPair> try_create_connected_pair(int type);
virtual ~LocalSocket() override;
- KResult sendfd(const OpenFileDescription& socket_description, OpenFileDescription& passing_description);
+ KResult sendfd(OpenFileDescription const& socket_description, NonnullRefPtr<OpenFileDescription> passing_description);
KResultOr<NonnullRefPtr<OpenFileDescription>> recvfd(const OpenFileDescription& socket_description);
static void for_each(Function<void(const LocalSocket&)>);
diff --git a/Kernel/Syscalls/sendfd.cpp b/Kernel/Syscalls/sendfd.cpp
index ea77b41bc9..99b8cab240 100644
--- a/Kernel/Syscalls/sendfd.cpp
+++ b/Kernel/Syscalls/sendfd.cpp
@@ -23,9 +23,9 @@ KResultOr<FlatPtr> Process::sys$sendfd(int sockfd, int fd)
if (!socket.is_connected())
return ENOTCONN;
- auto passing_descriptor = TRY(fds().open_file_description(fd));
+ auto passing_description = TRY(fds().open_file_description(fd));
auto& local_socket = static_cast<LocalSocket&>(socket);
- return local_socket.sendfd(*socket_description, *passing_descriptor);
+ return local_socket.sendfd(*socket_description, move(passing_description));
}
KResultOr<FlatPtr> Process::sys$recvfd(int sockfd, int options)