From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
patches@lists.linux.dev, David Howells <dhowells@redhat.com>,
Marc Dionne <marc.dionne@auristor.com>,
linux-afs@lists.infradead.org, Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.7 173/346] rxrpc, afs: Allow afs to pin rxrpc_peer objects
Date: Mon, 29 Jan 2024 09:03:24 -0800 [thread overview]
Message-ID: <20240129170021.487079121@linuxfoundation.org> (raw)
In-Reply-To: <20240129170016.356158639@linuxfoundation.org>
6.7-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Howells <dhowells@redhat.com>
[ Upstream commit 72904d7b9bfbf2dd146254edea93958bc35bbbfe ]
Change rxrpc's API such that:
(1) A new function, rxrpc_kernel_lookup_peer(), is provided to look up an
rxrpc_peer record for a remote address and a corresponding function,
rxrpc_kernel_put_peer(), is provided to dispose of it again.
(2) When setting up a call, the rxrpc_peer object used during a call is
now passed in rather than being set up by rxrpc_connect_call(). For
afs, this meenat passing it to rxrpc_kernel_begin_call() rather than
the full address (the service ID then has to be passed in as a
separate parameter).
(3) A new function, rxrpc_kernel_remote_addr(), is added so that afs can
get a pointer to the transport address for display purposed, and
another, rxrpc_kernel_remote_srx(), to gain a pointer to the full
rxrpc address.
(4) The function to retrieve the RTT from a call, rxrpc_kernel_get_srtt(),
is then altered to take a peer. This now returns the RTT or -1 if
there are insufficient samples.
(5) Rename rxrpc_kernel_get_peer() to rxrpc_kernel_call_get_peer().
(6) Provide a new function, rxrpc_kernel_get_peer(), to get a ref on a
peer the caller already has.
This allows the afs filesystem to pin the rxrpc_peer records that it is
using, allowing faster lookups and pointer comparisons rather than
comparing sockaddr_rxrpc contents. It also makes it easier to get hold of
the RTT. The following changes are made to afs:
(1) The addr_list struct's addrs[] elements now hold a peer struct pointer
and a service ID rather than a sockaddr_rxrpc.
(2) When displaying the transport address, rxrpc_kernel_remote_addr() is
used.
(3) The port arg is removed from afs_alloc_addrlist() since it's always
overridden.
(4) afs_merge_fs_addr4() and afs_merge_fs_addr6() do peer lookup and may
now return an error that must be handled.
(5) afs_find_server() now takes a peer pointer to specify the address.
(6) afs_find_server(), afs_compare_fs_alists() and afs_merge_fs_addr[46]{}
now do peer pointer comparison rather than address comparison.
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: linux-afs@lists.infradead.org
Stable-dep-of: 17ba6f0bd14f ("afs: Fix error handling with lookup via FS.InlineBulkStatus")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/afs/addr_list.c | 125 ++++++++++++++++++-----------------
fs/afs/cmservice.c | 5 +-
fs/afs/fs_probe.c | 11 +--
fs/afs/internal.h | 26 ++++----
fs/afs/proc.c | 9 +--
fs/afs/rotate.c | 6 +-
fs/afs/rxrpc.c | 10 +--
fs/afs/server.c | 41 ++----------
fs/afs/vl_alias.c | 55 +--------------
fs/afs/vl_list.c | 15 +++--
fs/afs/vl_probe.c | 12 ++--
fs/afs/vl_rotate.c | 6 +-
fs/afs/vlclient.c | 22 ++++--
include/net/af_rxrpc.h | 15 +++--
include/trace/events/rxrpc.h | 3 +
net/rxrpc/af_rxrpc.c | 62 ++++++++++++++---
net/rxrpc/ar-internal.h | 2 +-
net/rxrpc/call_object.c | 17 ++---
net/rxrpc/peer_object.c | 58 ++++++++++------
net/rxrpc/sendmsg.c | 11 ++-
20 files changed, 273 insertions(+), 238 deletions(-)
diff --git a/fs/afs/addr_list.c b/fs/afs/addr_list.c
index ac05a59e9d46..519821f5aedc 100644
--- a/fs/afs/addr_list.c
+++ b/fs/afs/addr_list.c
@@ -13,26 +13,33 @@
#include "internal.h"
#include "afs_fs.h"
+static void afs_free_addrlist(struct rcu_head *rcu)
+{
+ struct afs_addr_list *alist = container_of(rcu, struct afs_addr_list, rcu);
+ unsigned int i;
+
+ for (i = 0; i < alist->nr_addrs; i++)
+ rxrpc_kernel_put_peer(alist->addrs[i].peer);
+}
+
/*
* Release an address list.
*/
void afs_put_addrlist(struct afs_addr_list *alist)
{
if (alist && refcount_dec_and_test(&alist->usage))
- kfree_rcu(alist, rcu);
+ call_rcu(&alist->rcu, afs_free_addrlist);
}
/*
* Allocate an address list.
*/
-struct afs_addr_list *afs_alloc_addrlist(unsigned int nr,
- unsigned short service,
- unsigned short port)
+struct afs_addr_list *afs_alloc_addrlist(unsigned int nr, u16 service_id)
{
struct afs_addr_list *alist;
unsigned int i;
- _enter("%u,%u,%u", nr, service, port);
+ _enter("%u,%u", nr, service_id);
if (nr > AFS_MAX_ADDRESSES)
nr = AFS_MAX_ADDRESSES;
@@ -44,16 +51,8 @@ struct afs_addr_list *afs_alloc_addrlist(unsigned int nr,
refcount_set(&alist->usage, 1);
alist->max_addrs = nr;
- for (i = 0; i < nr; i++) {
- struct sockaddr_rxrpc *srx = &alist->addrs[i].srx;
- srx->srx_family = AF_RXRPC;
- srx->srx_service = service;
- srx->transport_type = SOCK_DGRAM;
- srx->transport_len = sizeof(srx->transport.sin6);
- srx->transport.sin6.sin6_family = AF_INET6;
- srx->transport.sin6.sin6_port = htons(port);
- }
-
+ for (i = 0; i < nr; i++)
+ alist->addrs[i].service_id = service_id;
return alist;
}
@@ -126,7 +125,7 @@ struct afs_vlserver_list *afs_parse_text_addrs(struct afs_net *net,
if (!vllist->servers[0].server)
goto error_vl;
- alist = afs_alloc_addrlist(nr, service, AFS_VL_PORT);
+ alist = afs_alloc_addrlist(nr, service);
if (!alist)
goto error;
@@ -197,9 +196,11 @@ struct afs_vlserver_list *afs_parse_text_addrs(struct afs_net *net,
}
if (family == AF_INET)
- afs_merge_fs_addr4(alist, x[0], xport);
+ ret = afs_merge_fs_addr4(net, alist, x[0], xport);
else
- afs_merge_fs_addr6(alist, x, xport);
+ ret = afs_merge_fs_addr6(net, alist, x, xport);
+ if (ret < 0)
+ goto error;
} while (p < end);
@@ -271,25 +272,33 @@ struct afs_vlserver_list *afs_dns_query(struct afs_cell *cell, time64_t *_expiry
/*
* Merge an IPv4 entry into a fileserver address list.
*/
-void afs_merge_fs_addr4(struct afs_addr_list *alist, __be32 xdr, u16 port)
+int afs_merge_fs_addr4(struct afs_net *net, struct afs_addr_list *alist,
+ __be32 xdr, u16 port)
{
- struct sockaddr_rxrpc *srx;
- u32 addr = ntohl(xdr);
+ struct sockaddr_rxrpc srx;
+ struct rxrpc_peer *peer;
int i;
if (alist->nr_addrs >= alist->max_addrs)
- return;
+ return 0;
- for (i = 0; i < alist->nr_ipv4; i++) {
- struct sockaddr_in *a = &alist->addrs[i].srx.transport.sin;
- u32 a_addr = ntohl(a->sin_addr.s_addr);
- u16 a_port = ntohs(a->sin_port);
+ srx.srx_family = AF_RXRPC;
+ srx.transport_type = SOCK_DGRAM;
+ srx.transport_len = sizeof(srx.transport.sin);
+ srx.transport.sin.sin_family = AF_INET;
+ srx.transport.sin.sin_port = htons(port);
+ srx.transport.sin.sin_addr.s_addr = xdr;
- if (addr == a_addr && port == a_port)
- return;
- if (addr == a_addr && port < a_port)
- break;
- if (addr < a_addr)
+ peer = rxrpc_kernel_lookup_peer(net->socket, &srx, GFP_KERNEL);
+ if (!peer)
+ return -ENOMEM;
+
+ for (i = 0; i < alist->nr_ipv4; i++) {
+ if (peer == alist->addrs[i].peer) {
+ rxrpc_kernel_put_peer(peer);
+ return 0;
+ }
+ if (peer <= alist->addrs[i].peer)
break;
}
@@ -298,38 +307,42 @@ void afs_merge_fs_addr4(struct afs_addr_list *alist, __be32 xdr, u16 port)
alist->addrs + i,
sizeof(alist->addrs[0]) * (alist->nr_addrs - i));
- srx = &alist->addrs[i].srx;
- srx->srx_family = AF_RXRPC;
- srx->transport_type = SOCK_DGRAM;
- srx->transport_len = sizeof(srx->transport.sin);
- srx->transport.sin.sin_family = AF_INET;
- srx->transport.sin.sin_port = htons(port);
- srx->transport.sin.sin_addr.s_addr = xdr;
+ alist->addrs[i].peer = peer;
alist->nr_ipv4++;
alist->nr_addrs++;
+ return 0;
}
/*
* Merge an IPv6 entry into a fileserver address list.
*/
-void afs_merge_fs_addr6(struct afs_addr_list *alist, __be32 *xdr, u16 port)
+int afs_merge_fs_addr6(struct afs_net *net, struct afs_addr_list *alist,
+ __be32 *xdr, u16 port)
{
- struct sockaddr_rxrpc *srx;
- int i, diff;
+ struct sockaddr_rxrpc srx;
+ struct rxrpc_peer *peer;
+ int i;
if (alist->nr_addrs >= alist->max_addrs)
- return;
+ return 0;
- for (i = alist->nr_ipv4; i < alist->nr_addrs; i++) {
- struct sockaddr_in6 *a = &alist->addrs[i].srx.transport.sin6;
- u16 a_port = ntohs(a->sin6_port);
+ srx.srx_family = AF_RXRPC;
+ srx.transport_type = SOCK_DGRAM;
+ srx.transport_len = sizeof(srx.transport.sin6);
+ srx.transport.sin6.sin6_family = AF_INET6;
+ srx.transport.sin6.sin6_port = htons(port);
+ memcpy(&srx.transport.sin6.sin6_addr, xdr, 16);
- diff = memcmp(xdr, &a->sin6_addr, 16);
- if (diff == 0 && port == a_port)
- return;
- if (diff == 0 && port < a_port)
- break;
- if (diff < 0)
+ peer = rxrpc_kernel_lookup_peer(net->socket, &srx, GFP_KERNEL);
+ if (!peer)
+ return -ENOMEM;
+
+ for (i = alist->nr_ipv4; i < alist->nr_addrs; i++) {
+ if (peer == alist->addrs[i].peer) {
+ rxrpc_kernel_put_peer(peer);
+ return 0;
+ }
+ if (peer <= alist->addrs[i].peer)
break;
}
@@ -337,15 +350,9 @@ void afs_merge_fs_addr6(struct afs_addr_list *alist, __be32 *xdr, u16 port)
memmove(alist->addrs + i + 1,
alist->addrs + i,
sizeof(alist->addrs[0]) * (alist->nr_addrs - i));
-
- srx = &alist->addrs[i].srx;
- srx->srx_family = AF_RXRPC;
- srx->transport_type = SOCK_DGRAM;
- srx->transport_len = sizeof(srx->transport.sin6);
- srx->transport.sin6.sin6_family = AF_INET6;
- srx->transport.sin6.sin6_port = htons(port);
- memcpy(&srx->transport.sin6.sin6_addr, xdr, 16);
+ alist->addrs[i].peer = peer;
alist->nr_addrs++;
+ return 0;
}
/*
diff --git a/fs/afs/cmservice.c b/fs/afs/cmservice.c
index d4ddb20d6732..99a3f20bc786 100644
--- a/fs/afs/cmservice.c
+++ b/fs/afs/cmservice.c
@@ -146,10 +146,11 @@ static int afs_find_cm_server_by_peer(struct afs_call *call)
{
struct sockaddr_rxrpc srx;
struct afs_server *server;
+ struct rxrpc_peer *peer;
- rxrpc_kernel_get_peer(call->net->socket, call->rxcall, &srx);
+ peer = rxrpc_kernel_get_call_peer(call->net->socket, call->rxcall);
- server = afs_find_server(call->net, &srx);
+ server = afs_find_server(call->net, peer);
if (!server) {
trace_afs_cm_no_server(call, &srx);
return 0;
diff --git a/fs/afs/fs_probe.c b/fs/afs/fs_probe.c
index 3dd24842f277..58d28b82571e 100644
--- a/fs/afs/fs_probe.c
+++ b/fs/afs/fs_probe.c
@@ -101,6 +101,7 @@ static void afs_fs_probe_not_done(struct afs_net *net,
void afs_fileserver_probe_result(struct afs_call *call)
{
struct afs_addr_list *alist = call->alist;
+ struct afs_address *addr = &alist->addrs[call->addr_ix];
struct afs_server *server = call->server;
unsigned int index = call->addr_ix;
unsigned int rtt_us = 0, cap0;
@@ -153,12 +154,12 @@ void afs_fileserver_probe_result(struct afs_call *call)
if (call->service_id == YFS_FS_SERVICE) {
server->probe.is_yfs = true;
set_bit(AFS_SERVER_FL_IS_YFS, &server->flags);
- alist->addrs[index].srx.srx_service = call->service_id;
+ addr->service_id = call->service_id;
} else {
server->probe.not_yfs = true;
if (!server->probe.is_yfs) {
clear_bit(AFS_SERVER_FL_IS_YFS, &server->flags);
- alist->addrs[index].srx.srx_service = call->service_id;
+ addr->service_id = call->service_id;
}
cap0 = ntohl(call->tmp);
if (cap0 & AFS3_VICED_CAPABILITY_64BITFILES)
@@ -167,7 +168,7 @@ void afs_fileserver_probe_result(struct afs_call *call)
clear_bit(AFS_SERVER_FL_HAS_FS64, &server->flags);
}
- rxrpc_kernel_get_srtt(call->net->socket, call->rxcall, &rtt_us);
+ rtt_us = rxrpc_kernel_get_srtt(addr->peer);
if (rtt_us < server->probe.rtt) {
server->probe.rtt = rtt_us;
server->rtt = rtt_us;
@@ -181,8 +182,8 @@ void afs_fileserver_probe_result(struct afs_call *call)
out:
spin_unlock(&server->probe_lock);
- _debug("probe %pU [%u] %pISpc rtt=%u ret=%d",
- &server->uuid, index, &alist->addrs[index].srx.transport,
+ _debug("probe %pU [%u] %pISpc rtt=%d ret=%d",
+ &server->uuid, index, rxrpc_kernel_remote_addr(alist->addrs[index].peer),
rtt_us, ret);
return afs_done_one_fs_probe(call->net, server);
diff --git a/fs/afs/internal.h b/fs/afs/internal.h
index e2adb314ab6a..ec08b4a7e499 100644
--- a/fs/afs/internal.h
+++ b/fs/afs/internal.h
@@ -72,6 +72,11 @@ enum afs_call_state {
AFS_CALL_COMPLETE, /* Completed or failed */
};
+struct afs_address {
+ struct rxrpc_peer *peer;
+ u16 service_id;
+};
+
/*
* List of server addresses.
*/
@@ -87,9 +92,7 @@ struct afs_addr_list {
enum dns_lookup_status status:8;
unsigned long failed; /* Mask of addrs that failed locally/ICMP */
unsigned long responded; /* Mask of addrs that responded */
- struct {
- struct sockaddr_rxrpc srx;
- } addrs[] __counted_by(max_addrs);
+ struct afs_address addrs[] __counted_by(max_addrs);
#define AFS_MAX_ADDRESSES ((unsigned int)(sizeof(unsigned long) * 8))
};
@@ -420,7 +423,7 @@ struct afs_vlserver {
atomic_t probe_outstanding;
spinlock_t probe_lock;
struct {
- unsigned int rtt; /* RTT in uS */
+ unsigned int rtt; /* Best RTT in uS (or UINT_MAX) */
u32 abort_code;
short error;
unsigned short flags;
@@ -537,7 +540,7 @@ struct afs_server {
atomic_t probe_outstanding;
spinlock_t probe_lock;
struct {
- unsigned int rtt; /* RTT in uS */
+ unsigned int rtt; /* Best RTT in uS (or UINT_MAX) */
u32 abort_code;
short error;
bool responded:1;
@@ -964,9 +967,7 @@ static inline struct afs_addr_list *afs_get_addrlist(struct afs_addr_list *alist
refcount_inc(&alist->usage);
return alist;
}
-extern struct afs_addr_list *afs_alloc_addrlist(unsigned int,
- unsigned short,
- unsigned short);
+extern struct afs_addr_list *afs_alloc_addrlist(unsigned int nr, u16 service_id);
extern void afs_put_addrlist(struct afs_addr_list *);
extern struct afs_vlserver_list *afs_parse_text_addrs(struct afs_net *,
const char *, size_t, char,
@@ -977,8 +978,10 @@ extern struct afs_vlserver_list *afs_dns_query(struct afs_cell *, time64_t *);
extern bool afs_iterate_addresses(struct afs_addr_cursor *);
extern int afs_end_cursor(struct afs_addr_cursor *);
-extern void afs_merge_fs_addr4(struct afs_addr_list *, __be32, u16);
-extern void afs_merge_fs_addr6(struct afs_addr_list *, __be32 *, u16);
+extern int afs_merge_fs_addr4(struct afs_net *net, struct afs_addr_list *addr,
+ __be32 xdr, u16 port);
+extern int afs_merge_fs_addr6(struct afs_net *net, struct afs_addr_list *addr,
+ __be32 *xdr, u16 port);
/*
* callback.c
@@ -1405,8 +1408,7 @@ extern void __exit afs_clean_up_permit_cache(void);
*/
extern spinlock_t afs_server_peer_lock;
-extern struct afs_server *afs_find_server(struct afs_net *,
- const struct sockaddr_rxrpc *);
+extern struct afs_server *afs_find_server(struct afs_net *, const struct rxrpc_peer *);
extern struct afs_server *afs_find_server_by_uuid(struct afs_net *, const uuid_t *);
extern struct afs_server *afs_lookup_server(struct afs_cell *, struct key *, const uuid_t *, u32);
extern struct afs_server *afs_get_server(struct afs_server *, enum afs_server_trace);
diff --git a/fs/afs/proc.c b/fs/afs/proc.c
index ab9cd986cfd9..8a65a06908d2 100644
--- a/fs/afs/proc.c
+++ b/fs/afs/proc.c
@@ -307,7 +307,7 @@ static int afs_proc_cell_vlservers_show(struct seq_file *m, void *v)
for (i = 0; i < alist->nr_addrs; i++)
seq_printf(m, " %c %pISpc\n",
alist->preferred == i ? '>' : '-',
- &alist->addrs[i].srx.transport);
+ rxrpc_kernel_remote_addr(alist->addrs[i].peer));
}
seq_printf(m, " info: fl=%lx rtt=%d\n", vlserver->flags, vlserver->rtt);
seq_printf(m, " probe: fl=%x e=%d ac=%d out=%d\n",
@@ -398,9 +398,10 @@ static int afs_proc_servers_show(struct seq_file *m, void *v)
seq_printf(m, " - ALIST v=%u rsp=%lx f=%lx\n",
alist->version, alist->responded, alist->failed);
for (i = 0; i < alist->nr_addrs; i++)
- seq_printf(m, " [%x] %pISpc%s\n",
- i, &alist->addrs[i].srx.transport,
- alist->preferred == i ? "*" : "");
+ seq_printf(m, " [%x] %pISpc%s rtt=%d\n",
+ i, rxrpc_kernel_remote_addr(alist->addrs[i].peer),
+ alist->preferred == i ? "*" : "",
+ rxrpc_kernel_get_srtt(alist->addrs[i].peer));
return 0;
}
diff --git a/fs/afs/rotate.c b/fs/afs/rotate.c
index 46081e5da6f5..59aed7a6dd11 100644
--- a/fs/afs/rotate.c
+++ b/fs/afs/rotate.c
@@ -113,7 +113,7 @@ bool afs_select_fileserver(struct afs_operation *op)
struct afs_server *server;
struct afs_vnode *vnode = op->file[0].vnode;
struct afs_error e;
- u32 rtt;
+ unsigned int rtt;
int error = op->ac.error, i;
_enter("%lx[%d],%lx[%d],%d,%d",
@@ -420,7 +420,7 @@ bool afs_select_fileserver(struct afs_operation *op)
}
op->index = -1;
- rtt = U32_MAX;
+ rtt = UINT_MAX;
for (i = 0; i < op->server_list->nr_servers; i++) {
struct afs_server *s = op->server_list->servers[i].server;
@@ -488,7 +488,7 @@ bool afs_select_fileserver(struct afs_operation *op)
_debug("address [%u] %u/%u %pISp",
op->index, op->ac.index, op->ac.alist->nr_addrs,
- &op->ac.alist->addrs[op->ac.index].srx.transport);
+ rxrpc_kernel_remote_addr(op->ac.alist->addrs[op->ac.index].peer));
_leave(" = t");
return true;
diff --git a/fs/afs/rxrpc.c b/fs/afs/rxrpc.c
index 181317126e43..2603db03b7ff 100644
--- a/fs/afs/rxrpc.c
+++ b/fs/afs/rxrpc.c
@@ -296,7 +296,8 @@ static void afs_notify_end_request_tx(struct sock *sock,
*/
void afs_make_call(struct afs_addr_cursor *ac, struct afs_call *call, gfp_t gfp)
{
- struct sockaddr_rxrpc *srx = &ac->alist->addrs[ac->index].srx;
+ struct afs_address *addr = &ac->alist->addrs[ac->index];
+ struct rxrpc_peer *peer = addr->peer;
struct rxrpc_call *rxcall;
struct msghdr msg;
struct kvec iov[1];
@@ -304,7 +305,7 @@ void afs_make_call(struct afs_addr_cursor *ac, struct afs_call *call, gfp_t gfp)
s64 tx_total_len;
int ret;
- _enter(",{%pISp},", &srx->transport);
+ _enter(",{%pISp},", rxrpc_kernel_remote_addr(addr->peer));
ASSERT(call->type != NULL);
ASSERT(call->type->name != NULL);
@@ -333,7 +334,7 @@ void afs_make_call(struct afs_addr_cursor *ac, struct afs_call *call, gfp_t gfp)
}
/* create a call */
- rxcall = rxrpc_kernel_begin_call(call->net->socket, srx, call->key,
+ rxcall = rxrpc_kernel_begin_call(call->net->socket, peer, call->key,
(unsigned long)call,
tx_total_len,
call->max_lifespan,
@@ -341,6 +342,7 @@ void afs_make_call(struct afs_addr_cursor *ac, struct afs_call *call, gfp_t gfp)
(call->async ?
afs_wake_up_async_call :
afs_wake_up_call_waiter),
+ addr->service_id,
call->upgrade,
(call->intr ? RXRPC_PREINTERRUPTIBLE :
RXRPC_UNINTERRUPTIBLE),
@@ -461,7 +463,7 @@ static void afs_log_error(struct afs_call *call, s32 remote_abort)
max = m + 1;
pr_notice("kAFS: Peer reported %s failure on %s [%pISp]\n",
msg, call->type->name,
- &call->alist->addrs[call->addr_ix].srx.transport);
+ rxrpc_kernel_remote_addr(call->alist->addrs[call->addr_ix].peer));
}
}
diff --git a/fs/afs/server.c b/fs/afs/server.c
index b8e2d211d4a1..5b5fa94005c9 100644
--- a/fs/afs/server.c
+++ b/fs/afs/server.c
@@ -21,13 +21,12 @@ static void __afs_put_server(struct afs_net *, struct afs_server *);
/*
* Find a server by one of its addresses.
*/
-struct afs_server *afs_find_server(struct afs_net *net,
- const struct sockaddr_rxrpc *srx)
+struct afs_server *afs_find_server(struct afs_net *net, const struct rxrpc_peer *peer)
{
const struct afs_addr_list *alist;
struct afs_server *server = NULL;
unsigned int i;
- int seq = 1, diff;
+ int seq = 1;
rcu_read_lock();
@@ -38,37 +37,11 @@ struct afs_server *afs_find_server(struct afs_net *net,
seq++; /* 2 on the 1st/lockless path, otherwise odd */
read_seqbegin_or_lock(&net->fs_addr_lock, &seq);
- if (srx->transport.family == AF_INET6) {
- const struct sockaddr_in6 *a = &srx->transport.sin6, *b;
- hlist_for_each_entry_rcu(server, &net->fs_addresses6, addr6_link) {
- alist = rcu_dereference(server->addresses);
- for (i = alist->nr_ipv4; i < alist->nr_addrs; i++) {
- b = &alist->addrs[i].srx.transport.sin6;
- diff = ((u16 __force)a->sin6_port -
- (u16 __force)b->sin6_port);
- if (diff == 0)
- diff = memcmp(&a->sin6_addr,
- &b->sin6_addr,
- sizeof(struct in6_addr));
- if (diff == 0)
- goto found;
- }
- }
- } else {
- const struct sockaddr_in *a = &srx->transport.sin, *b;
- hlist_for_each_entry_rcu(server, &net->fs_addresses4, addr4_link) {
- alist = rcu_dereference(server->addresses);
- for (i = 0; i < alist->nr_ipv4; i++) {
- b = &alist->addrs[i].srx.transport.sin;
- diff = ((u16 __force)a->sin_port -
- (u16 __force)b->sin_port);
- if (diff == 0)
- diff = ((u32 __force)a->sin_addr.s_addr -
- (u32 __force)b->sin_addr.s_addr);
- if (diff == 0)
- goto found;
- }
- }
+ hlist_for_each_entry_rcu(server, &net->fs_addresses6, addr6_link) {
+ alist = rcu_dereference(server->addresses);
+ for (i = 0; i < alist->nr_addrs; i++)
+ if (alist->addrs[i].peer == peer)
+ goto found;
}
server = NULL;
diff --git a/fs/afs/vl_alias.c b/fs/afs/vl_alias.c
index d3c0df70a1a5..6fdf9f1bedc0 100644
--- a/fs/afs/vl_alias.c
+++ b/fs/afs/vl_alias.c
@@ -32,55 +32,6 @@ static struct afs_volume *afs_sample_volume(struct afs_cell *cell, struct key *k
return volume;
}
-/*
- * Compare two addresses.
- */
-static int afs_compare_addrs(const struct sockaddr_rxrpc *srx_a,
- const struct sockaddr_rxrpc *srx_b)
-{
- short port_a, port_b;
- int addr_a, addr_b, diff;
-
- diff = (short)srx_a->transport_type - (short)srx_b->transport_type;
- if (diff)
- goto out;
-
- switch (srx_a->transport_type) {
- case AF_INET: {
- const struct sockaddr_in *a = &srx_a->transport.sin;
- const struct sockaddr_in *b = &srx_b->transport.sin;
- addr_a = ntohl(a->sin_addr.s_addr);
- addr_b = ntohl(b->sin_addr.s_addr);
- diff = addr_a - addr_b;
- if (diff == 0) {
- port_a = ntohs(a->sin_port);
- port_b = ntohs(b->sin_port);
- diff = port_a - port_b;
- }
- break;
- }
-
- case AF_INET6: {
- const struct sockaddr_in6 *a = &srx_a->transport.sin6;
- const struct sockaddr_in6 *b = &srx_b->transport.sin6;
- diff = memcmp(&a->sin6_addr, &b->sin6_addr, 16);
- if (diff == 0) {
- port_a = ntohs(a->sin6_port);
- port_b = ntohs(b->sin6_port);
- diff = port_a - port_b;
- }
- break;
- }
-
- default:
- WARN_ON(1);
- diff = 1;
- }
-
-out:
- return diff;
-}
-
/*
* Compare the address lists of a pair of fileservers.
*/
@@ -94,9 +45,9 @@ static int afs_compare_fs_alists(const struct afs_server *server_a,
lb = rcu_dereference(server_b->addresses);
while (a < la->nr_addrs && b < lb->nr_addrs) {
- const struct sockaddr_rxrpc *srx_a = &la->addrs[a].srx;
- const struct sockaddr_rxrpc *srx_b = &lb->addrs[b].srx;
- int diff = afs_compare_addrs(srx_a, srx_b);
+ unsigned long pa = (unsigned long)la->addrs[a].peer;
+ unsigned long pb = (unsigned long)lb->addrs[b].peer;
+ long diff = pa - pb;
if (diff < 0) {
a++;
diff --git a/fs/afs/vl_list.c b/fs/afs/vl_list.c
index acc48216136a..ba89140eee9e 100644
--- a/fs/afs/vl_list.c
+++ b/fs/afs/vl_list.c
@@ -83,14 +83,15 @@ static u16 afs_extract_le16(const u8 **_b)
/*
* Build a VL server address list from a DNS queried server list.
*/
-static struct afs_addr_list *afs_extract_vl_addrs(const u8 **_b, const u8 *end,
+static struct afs_addr_list *afs_extract_vl_addrs(struct afs_net *net,
+ const u8 **_b, const u8 *end,
u8 nr_addrs, u16 port)
{
struct afs_addr_list *alist;
const u8 *b = *_b;
int ret = -EINVAL;
- alist = afs_alloc_addrlist(nr_addrs, VL_SERVICE, port);
+ alist = afs_alloc_addrlist(nr_addrs, VL_SERVICE);
if (!alist)
return ERR_PTR(-ENOMEM);
if (nr_addrs == 0)
@@ -109,7 +110,9 @@ static struct afs_addr_list *afs_extract_vl_addrs(const u8 **_b, const u8 *end,
goto error;
}
memcpy(x, b, 4);
- afs_merge_fs_addr4(alist, x[0], port);
+ ret = afs_merge_fs_addr4(net, alist, x[0], port);
+ if (ret < 0)
+ goto error;
b += 4;
break;
@@ -119,7 +122,9 @@ static struct afs_addr_list *afs_extract_vl_addrs(const u8 **_b, const u8 *end,
goto error;
}
memcpy(x, b, 16);
- afs_merge_fs_addr6(alist, x, port);
+ ret = afs_merge_fs_addr6(net, alist, x, port);
+ if (ret < 0)
+ goto error;
b += 16;
break;
@@ -247,7 +252,7 @@ struct afs_vlserver_list *afs_extract_vlserver_list(struct afs_cell *cell,
/* Extract the addresses - note that we can't skip this as we
* have to advance the payload pointer.
*/
- addrs = afs_extract_vl_addrs(&b, end, bs.nr_addrs, bs.port);
+ addrs = afs_extract_vl_addrs(cell->net, &b, end, bs.nr_addrs, bs.port);
if (IS_ERR(addrs)) {
ret = PTR_ERR(addrs);
goto error_2;
diff --git a/fs/afs/vl_probe.c b/fs/afs/vl_probe.c
index bdd9372e3fb2..9551aef07cee 100644
--- a/fs/afs/vl_probe.c
+++ b/fs/afs/vl_probe.c
@@ -48,6 +48,7 @@ void afs_vlserver_probe_result(struct afs_call *call)
{
struct afs_addr_list *alist = call->alist;
struct afs_vlserver *server = call->vlserver;
+ struct afs_address *addr = &alist->addrs[call->addr_ix];
unsigned int server_index = call->server_index;
unsigned int rtt_us = 0;
unsigned int index = call->addr_ix;
@@ -106,16 +107,16 @@ void afs_vlserver_probe_result(struct afs_call *call)
if (call->service_id == YFS_VL_SERVICE) {
server->probe.flags |= AFS_VLSERVER_PROBE_IS_YFS;
set_bit(AFS_VLSERVER_FL_IS_YFS, &server->flags);
- alist->addrs[index].srx.srx_service = call->service_id;
+ addr->service_id = call->service_id;
} else {
server->probe.flags |= AFS_VLSERVER_PROBE_NOT_YFS;
if (!(server->probe.flags & AFS_VLSERVER_PROBE_IS_YFS)) {
clear_bit(AFS_VLSERVER_FL_IS_YFS, &server->flags);
- alist->addrs[index].srx.srx_service = call->service_id;
+ addr->service_id = call->service_id;
}
}
- rxrpc_kernel_get_srtt(call->net->socket, call->rxcall, &rtt_us);
+ rtt_us = rxrpc_kernel_get_srtt(addr->peer);
if (rtt_us < server->probe.rtt) {
server->probe.rtt = rtt_us;
server->rtt = rtt_us;
@@ -130,8 +131,9 @@ void afs_vlserver_probe_result(struct afs_call *call)
out:
spin_unlock(&server->probe_lock);
- _debug("probe [%u][%u] %pISpc rtt=%u ret=%d",
- server_index, index, &alist->addrs[index].srx.transport, rtt_us, ret);
+ _debug("probe [%u][%u] %pISpc rtt=%d ret=%d",
+ server_index, index, rxrpc_kernel_remote_addr(addr->peer),
+ rtt_us, ret);
afs_done_one_vl_probe(server, have_result);
}
diff --git a/fs/afs/vl_rotate.c b/fs/afs/vl_rotate.c
index e52b9d4c8a0a..f8f255c966ae 100644
--- a/fs/afs/vl_rotate.c
+++ b/fs/afs/vl_rotate.c
@@ -92,7 +92,7 @@ bool afs_select_vlserver(struct afs_vl_cursor *vc)
struct afs_addr_list *alist;
struct afs_vlserver *vlserver;
struct afs_error e;
- u32 rtt;
+ unsigned int rtt;
int error = vc->ac.error, i;
_enter("%lx[%d],%lx[%d],%d,%d",
@@ -194,7 +194,7 @@ bool afs_select_vlserver(struct afs_vl_cursor *vc)
goto selected_server;
vc->index = -1;
- rtt = U32_MAX;
+ rtt = UINT_MAX;
for (i = 0; i < vc->server_list->nr_servers; i++) {
struct afs_vlserver *s = vc->server_list->servers[i].server;
@@ -249,7 +249,7 @@ bool afs_select_vlserver(struct afs_vl_cursor *vc)
_debug("VL address %d/%d", vc->ac.index, vc->ac.alist->nr_addrs);
- _leave(" = t %pISpc", &vc->ac.alist->addrs[vc->ac.index].srx.transport);
+ _leave(" = t %pISpc", rxrpc_kernel_remote_addr(vc->ac.alist->addrs[vc->ac.index].peer));
return true;
next_server:
diff --git a/fs/afs/vlclient.c b/fs/afs/vlclient.c
index 00fca3c66ba6..41e7932d75c6 100644
--- a/fs/afs/vlclient.c
+++ b/fs/afs/vlclient.c
@@ -208,7 +208,7 @@ static int afs_deliver_vl_get_addrs_u(struct afs_call *call)
count = ntohl(*bp);
nentries = min(nentries, count);
- alist = afs_alloc_addrlist(nentries, FS_SERVICE, AFS_FS_PORT);
+ alist = afs_alloc_addrlist(nentries, FS_SERVICE);
if (!alist)
return -ENOMEM;
alist->version = uniquifier;
@@ -230,9 +230,13 @@ static int afs_deliver_vl_get_addrs_u(struct afs_call *call)
alist = call->ret_alist;
bp = call->buffer;
count = min(call->count, 4U);
- for (i = 0; i < count; i++)
- if (alist->nr_addrs < call->count2)
- afs_merge_fs_addr4(alist, *bp++, AFS_FS_PORT);
+ for (i = 0; i < count; i++) {
+ if (alist->nr_addrs < call->count2) {
+ ret = afs_merge_fs_addr4(call->net, alist, *bp++, AFS_FS_PORT);
+ if (ret < 0)
+ return ret;
+ }
+ }
call->count -= count;
if (call->count > 0)
@@ -450,7 +454,7 @@ static int afs_deliver_yfsvl_get_endpoints(struct afs_call *call)
if (call->count > YFS_MAXENDPOINTS)
return afs_protocol_error(call, afs_eproto_yvl_fsendpt_num);
- alist = afs_alloc_addrlist(call->count, FS_SERVICE, AFS_FS_PORT);
+ alist = afs_alloc_addrlist(call->count, FS_SERVICE);
if (!alist)
return -ENOMEM;
alist->version = uniquifier;
@@ -488,14 +492,18 @@ static int afs_deliver_yfsvl_get_endpoints(struct afs_call *call)
if (ntohl(bp[0]) != sizeof(__be32) * 2)
return afs_protocol_error(
call, afs_eproto_yvl_fsendpt4_len);
- afs_merge_fs_addr4(alist, bp[1], ntohl(bp[2]));
+ ret = afs_merge_fs_addr4(call->net, alist, bp[1], ntohl(bp[2]));
+ if (ret < 0)
+ return ret;
bp += 3;
break;
case YFS_ENDPOINT_IPV6:
if (ntohl(bp[0]) != sizeof(__be32) * 5)
return afs_protocol_error(
call, afs_eproto_yvl_fsendpt6_len);
- afs_merge_fs_addr6(alist, bp + 1, ntohl(bp[5]));
+ ret = afs_merge_fs_addr6(call->net, alist, bp + 1, ntohl(bp[5]));
+ if (ret < 0)
+ return ret;
bp += 6;
break;
default:
diff --git a/include/net/af_rxrpc.h b/include/net/af_rxrpc.h
index 5531dd08061e..0754c463224a 100644
--- a/include/net/af_rxrpc.h
+++ b/include/net/af_rxrpc.h
@@ -15,6 +15,7 @@ struct key;
struct sock;
struct socket;
struct rxrpc_call;
+struct rxrpc_peer;
enum rxrpc_abort_reason;
enum rxrpc_interruptibility {
@@ -41,13 +42,14 @@ void rxrpc_kernel_new_call_notification(struct socket *,
rxrpc_notify_new_call_t,
rxrpc_discard_new_call_t);
struct rxrpc_call *rxrpc_kernel_begin_call(struct socket *sock,
- struct sockaddr_rxrpc *srx,
+ struct rxrpc_peer *peer,
struct key *key,
unsigned long user_call_ID,
s64 tx_total_len,
u32 hard_timeout,
gfp_t gfp,
rxrpc_notify_rx_t notify_rx,
+ u16 service_id,
bool upgrade,
enum rxrpc_interruptibility interruptibility,
unsigned int debug_id);
@@ -60,9 +62,14 @@ bool rxrpc_kernel_abort_call(struct socket *, struct rxrpc_call *,
u32, int, enum rxrpc_abort_reason);
void rxrpc_kernel_shutdown_call(struct socket *sock, struct rxrpc_call *call);
void rxrpc_kernel_put_call(struct socket *sock, struct rxrpc_call *call);
-void rxrpc_kernel_get_peer(struct socket *, struct rxrpc_call *,
- struct sockaddr_rxrpc *);
-bool rxrpc_kernel_get_srtt(struct socket *, struct rxrpc_call *, u32 *);
+struct rxrpc_peer *rxrpc_kernel_lookup_peer(struct socket *sock,
+ struct sockaddr_rxrpc *srx, gfp_t gfp);
+void rxrpc_kernel_put_peer(struct rxrpc_peer *peer);
+struct rxrpc_peer *rxrpc_kernel_get_peer(struct rxrpc_peer *peer);
+struct rxrpc_peer *rxrpc_kernel_get_call_peer(struct socket *sock, struct rxrpc_call *call);
+const struct sockaddr_rxrpc *rxrpc_kernel_remote_srx(const struct rxrpc_peer *peer);
+const struct sockaddr *rxrpc_kernel_remote_addr(const struct rxrpc_peer *peer);
+unsigned int rxrpc_kernel_get_srtt(const struct rxrpc_peer *);
int rxrpc_kernel_charge_accept(struct socket *, rxrpc_notify_rx_t,
rxrpc_user_attach_call_t, unsigned long, gfp_t,
unsigned int);
diff --git a/include/trace/events/rxrpc.h b/include/trace/events/rxrpc.h
index f7e537f64db4..4c1ef7b3705c 100644
--- a/include/trace/events/rxrpc.h
+++ b/include/trace/events/rxrpc.h
@@ -178,7 +178,9 @@
#define rxrpc_peer_traces \
EM(rxrpc_peer_free, "FREE ") \
EM(rxrpc_peer_get_accept, "GET accept ") \
+ EM(rxrpc_peer_get_application, "GET app ") \
EM(rxrpc_peer_get_bundle, "GET bundle ") \
+ EM(rxrpc_peer_get_call, "GET call ") \
EM(rxrpc_peer_get_client_conn, "GET cln-conn") \
EM(rxrpc_peer_get_input, "GET input ") \
EM(rxrpc_peer_get_input_error, "GET inpt-err") \
@@ -187,6 +189,7 @@
EM(rxrpc_peer_get_service_conn, "GET srv-conn") \
EM(rxrpc_peer_new_client, "NEW client ") \
EM(rxrpc_peer_new_prealloc, "NEW prealloc") \
+ EM(rxrpc_peer_put_application, "PUT app ") \
EM(rxrpc_peer_put_bundle, "PUT bundle ") \
EM(rxrpc_peer_put_call, "PUT call ") \
EM(rxrpc_peer_put_conn, "PUT conn ") \
diff --git a/net/rxrpc/af_rxrpc.c b/net/rxrpc/af_rxrpc.c
index fa8aec78f63d..465bfe5eb061 100644
--- a/net/rxrpc/af_rxrpc.c
+++ b/net/rxrpc/af_rxrpc.c
@@ -258,16 +258,62 @@ static int rxrpc_listen(struct socket *sock, int backlog)
return ret;
}
+/**
+ * rxrpc_kernel_lookup_peer - Obtain remote transport endpoint for an address
+ * @sock: The socket through which it will be accessed
+ * @srx: The network address
+ * @gfp: Allocation flags
+ *
+ * Lookup or create a remote transport endpoint record for the specified
+ * address and return it with a ref held.
+ */
+struct rxrpc_peer *rxrpc_kernel_lookup_peer(struct socket *sock,
+ struct sockaddr_rxrpc *srx, gfp_t gfp)
+{
+ struct rxrpc_sock *rx = rxrpc_sk(sock->sk);
+ int ret;
+
+ ret = rxrpc_validate_address(rx, srx, sizeof(*srx));
+ if (ret < 0)
+ return ERR_PTR(ret);
+
+ return rxrpc_lookup_peer(rx->local, srx, gfp);
+}
+EXPORT_SYMBOL(rxrpc_kernel_lookup_peer);
+
+/**
+ * rxrpc_kernel_get_peer - Get a reference on a peer
+ * @peer: The peer to get a reference on.
+ *
+ * Get a record for the remote peer in a call.
+ */
+struct rxrpc_peer *rxrpc_kernel_get_peer(struct rxrpc_peer *peer)
+{
+ return peer ? rxrpc_get_peer(peer, rxrpc_peer_get_application) : NULL;
+}
+EXPORT_SYMBOL(rxrpc_kernel_get_peer);
+
+/**
+ * rxrpc_kernel_put_peer - Allow a kernel app to drop a peer reference
+ * @peer: The peer to drop a ref on
+ */
+void rxrpc_kernel_put_peer(struct rxrpc_peer *peer)
+{
+ rxrpc_put_peer(peer, rxrpc_peer_put_application);
+}
+EXPORT_SYMBOL(rxrpc_kernel_put_peer);
+
/**
* rxrpc_kernel_begin_call - Allow a kernel service to begin a call
* @sock: The socket on which to make the call
- * @srx: The address of the peer to contact
+ * @peer: The peer to contact
* @key: The security context to use (defaults to socket setting)
* @user_call_ID: The ID to use
* @tx_total_len: Total length of data to transmit during the call (or -1)
* @hard_timeout: The maximum lifespan of the call in sec
* @gfp: The allocation constraints
* @notify_rx: Where to send notifications instead of socket queue
+ * @service_id: The ID of the service to contact
* @upgrade: Request service upgrade for call
* @interruptibility: The call is interruptible, or can be canceled.
* @debug_id: The debug ID for tracing to be assigned to the call
@@ -280,13 +326,14 @@ static int rxrpc_listen(struct socket *sock, int backlog)
* supplying @srx and @key.
*/
struct rxrpc_call *rxrpc_kernel_begin_call(struct socket *sock,
- struct sockaddr_rxrpc *srx,
+ struct rxrpc_peer *peer,
struct key *key,
unsigned long user_call_ID,
s64 tx_total_len,
u32 hard_timeout,
gfp_t gfp,
rxrpc_notify_rx_t notify_rx,
+ u16 service_id,
bool upgrade,
enum rxrpc_interruptibility interruptibility,
unsigned int debug_id)
@@ -295,13 +342,11 @@ struct rxrpc_call *rxrpc_kernel_begin_call(struct socket *sock,
struct rxrpc_call_params p;
struct rxrpc_call *call;
struct rxrpc_sock *rx = rxrpc_sk(sock->sk);
- int ret;
_enter(",,%x,%lx", key_serial(key), user_call_ID);
- ret = rxrpc_validate_address(rx, srx, sizeof(*srx));
- if (ret < 0)
- return ERR_PTR(ret);
+ if (WARN_ON_ONCE(peer->local != rx->local))
+ return ERR_PTR(-EIO);
lock_sock(&rx->sk);
@@ -319,12 +364,13 @@ struct rxrpc_call *rxrpc_kernel_begin_call(struct socket *sock,
memset(&cp, 0, sizeof(cp));
cp.local = rx->local;
+ cp.peer = peer;
cp.key = key;
cp.security_level = rx->min_sec_level;
cp.exclusive = false;
cp.upgrade = upgrade;
- cp.service_id = srx->srx_service;
- call = rxrpc_new_client_call(rx, &cp, srx, &p, gfp, debug_id);
+ cp.service_id = service_id;
+ call = rxrpc_new_client_call(rx, &cp, &p, gfp, debug_id);
/* The socket has been unlocked. */
if (!IS_ERR(call)) {
call->notify_rx = notify_rx;
diff --git a/net/rxrpc/ar-internal.h b/net/rxrpc/ar-internal.h
index e8b43408136a..5d5b19f20d1e 100644
--- a/net/rxrpc/ar-internal.h
+++ b/net/rxrpc/ar-internal.h
@@ -364,6 +364,7 @@ struct rxrpc_conn_proto {
struct rxrpc_conn_parameters {
struct rxrpc_local *local; /* Representation of local endpoint */
+ struct rxrpc_peer *peer; /* Representation of remote endpoint */
struct key *key; /* Security details */
bool exclusive; /* T if conn is exclusive */
bool upgrade; /* T if service ID can be upgraded */
@@ -867,7 +868,6 @@ struct rxrpc_call *rxrpc_find_call_by_user_ID(struct rxrpc_sock *, unsigned long
struct rxrpc_call *rxrpc_alloc_call(struct rxrpc_sock *, gfp_t, unsigned int);
struct rxrpc_call *rxrpc_new_client_call(struct rxrpc_sock *,
struct rxrpc_conn_parameters *,
- struct sockaddr_rxrpc *,
struct rxrpc_call_params *, gfp_t,
unsigned int);
void rxrpc_start_call_timer(struct rxrpc_call *call);
diff --git a/net/rxrpc/call_object.c b/net/rxrpc/call_object.c
index f10b37c14772..0943e54370ba 100644
--- a/net/rxrpc/call_object.c
+++ b/net/rxrpc/call_object.c
@@ -193,7 +193,6 @@ struct rxrpc_call *rxrpc_alloc_call(struct rxrpc_sock *rx, gfp_t gfp,
* Allocate a new client call.
*/
static struct rxrpc_call *rxrpc_alloc_client_call(struct rxrpc_sock *rx,
- struct sockaddr_rxrpc *srx,
struct rxrpc_conn_parameters *cp,
struct rxrpc_call_params *p,
gfp_t gfp,
@@ -211,10 +210,12 @@ static struct rxrpc_call *rxrpc_alloc_client_call(struct rxrpc_sock *rx,
now = ktime_get_real();
call->acks_latest_ts = now;
call->cong_tstamp = now;
- call->dest_srx = *srx;
+ call->dest_srx = cp->peer->srx;
+ call->dest_srx.srx_service = cp->service_id;
call->interruptibility = p->interruptibility;
call->tx_total_len = p->tx_total_len;
call->key = key_get(cp->key);
+ call->peer = rxrpc_get_peer(cp->peer, rxrpc_peer_get_call);
call->local = rxrpc_get_local(cp->local, rxrpc_local_get_call);
call->security_level = cp->security_level;
if (p->kernel)
@@ -306,10 +307,6 @@ static int rxrpc_connect_call(struct rxrpc_call *call, gfp_t gfp)
_enter("{%d,%lx},", call->debug_id, call->user_call_ID);
- call->peer = rxrpc_lookup_peer(local, &call->dest_srx, gfp);
- if (!call->peer)
- goto error;
-
ret = rxrpc_look_up_bundle(call, gfp);
if (ret < 0)
goto error;
@@ -334,7 +331,6 @@ static int rxrpc_connect_call(struct rxrpc_call *call, gfp_t gfp)
*/
struct rxrpc_call *rxrpc_new_client_call(struct rxrpc_sock *rx,
struct rxrpc_conn_parameters *cp,
- struct sockaddr_rxrpc *srx,
struct rxrpc_call_params *p,
gfp_t gfp,
unsigned int debug_id)
@@ -349,13 +345,18 @@ struct rxrpc_call *rxrpc_new_client_call(struct rxrpc_sock *rx,
_enter("%p,%lx", rx, p->user_call_ID);
+ if (WARN_ON_ONCE(!cp->peer)) {
+ release_sock(&rx->sk);
+ return ERR_PTR(-EIO);
+ }
+
limiter = rxrpc_get_call_slot(p, gfp);
if (!limiter) {
release_sock(&rx->sk);
return ERR_PTR(-ERESTARTSYS);
}
- call = rxrpc_alloc_client_call(rx, srx, cp, p, gfp, debug_id);
+ call = rxrpc_alloc_client_call(rx, cp, p, gfp, debug_id);
if (IS_ERR(call)) {
release_sock(&rx->sk);
up(limiter);
diff --git a/net/rxrpc/peer_object.c b/net/rxrpc/peer_object.c
index 8d7a715a0bb1..49dcda67a0d5 100644
--- a/net/rxrpc/peer_object.c
+++ b/net/rxrpc/peer_object.c
@@ -22,6 +22,8 @@
#include <net/ip6_route.h>
#include "ar-internal.h"
+static const struct sockaddr_rxrpc rxrpc_null_addr;
+
/*
* Hash a peer key.
*/
@@ -457,39 +459,53 @@ void rxrpc_destroy_all_peers(struct rxrpc_net *rxnet)
}
/**
- * rxrpc_kernel_get_peer - Get the peer address of a call
+ * rxrpc_kernel_get_call_peer - Get the peer address of a call
* @sock: The socket on which the call is in progress.
* @call: The call to query
- * @_srx: Where to place the result
*
- * Get the address of the remote peer in a call.
+ * Get a record for the remote peer in a call.
*/
-void rxrpc_kernel_get_peer(struct socket *sock, struct rxrpc_call *call,
- struct sockaddr_rxrpc *_srx)
+struct rxrpc_peer *rxrpc_kernel_get_call_peer(struct socket *sock, struct rxrpc_call *call)
{
- *_srx = call->peer->srx;
+ return call->peer;
}
-EXPORT_SYMBOL(rxrpc_kernel_get_peer);
+EXPORT_SYMBOL(rxrpc_kernel_get_call_peer);
/**
* rxrpc_kernel_get_srtt - Get a call's peer smoothed RTT
- * @sock: The socket on which the call is in progress.
- * @call: The call to query
- * @_srtt: Where to store the SRTT value.
+ * @peer: The peer to query
*
- * Get the call's peer smoothed RTT in uS.
+ * Get the call's peer smoothed RTT in uS or UINT_MAX if we have no samples.
*/
-bool rxrpc_kernel_get_srtt(struct socket *sock, struct rxrpc_call *call,
- u32 *_srtt)
+unsigned int rxrpc_kernel_get_srtt(const struct rxrpc_peer *peer)
{
- struct rxrpc_peer *peer = call->peer;
+ return peer->rtt_count > 0 ? peer->srtt_us >> 3 : UINT_MAX;
+}
+EXPORT_SYMBOL(rxrpc_kernel_get_srtt);
- if (peer->rtt_count == 0) {
- *_srtt = 1000000; /* 1S */
- return false;
- }
+/**
+ * rxrpc_kernel_remote_srx - Get the address of a peer
+ * @peer: The peer to query
+ *
+ * Get a pointer to the address from a peer record. The caller is responsible
+ * for making sure that the address is not deallocated.
+ */
+const struct sockaddr_rxrpc *rxrpc_kernel_remote_srx(const struct rxrpc_peer *peer)
+{
+ return peer ? &peer->srx : &rxrpc_null_addr;
+}
+EXPORT_SYMBOL(rxrpc_kernel_remote_srx);
- *_srtt = call->peer->srtt_us >> 3;
- return true;
+/**
+ * rxrpc_kernel_remote_addr - Get the peer transport address of a call
+ * @peer: The peer to query
+ *
+ * Get a pointer to the transport address from a peer record. The caller is
+ * responsible for making sure that the address is not deallocated.
+ */
+const struct sockaddr *rxrpc_kernel_remote_addr(const struct rxrpc_peer *peer)
+{
+ return (const struct sockaddr *)
+ (peer ? &peer->srx.transport : &rxrpc_null_addr.transport);
}
-EXPORT_SYMBOL(rxrpc_kernel_get_srtt);
+EXPORT_SYMBOL(rxrpc_kernel_remote_addr);
diff --git a/net/rxrpc/sendmsg.c b/net/rxrpc/sendmsg.c
index 8e0b94714e84..5677d5690a02 100644
--- a/net/rxrpc/sendmsg.c
+++ b/net/rxrpc/sendmsg.c
@@ -572,6 +572,7 @@ rxrpc_new_client_call_for_sendmsg(struct rxrpc_sock *rx, struct msghdr *msg,
__acquires(&call->user_mutex)
{
struct rxrpc_conn_parameters cp;
+ struct rxrpc_peer *peer;
struct rxrpc_call *call;
struct key *key;
@@ -584,21 +585,29 @@ rxrpc_new_client_call_for_sendmsg(struct rxrpc_sock *rx, struct msghdr *msg,
return ERR_PTR(-EDESTADDRREQ);
}
+ peer = rxrpc_lookup_peer(rx->local, srx, GFP_KERNEL);
+ if (!peer) {
+ release_sock(&rx->sk);
+ return ERR_PTR(-ENOMEM);
+ }
+
key = rx->key;
if (key && !rx->key->payload.data[0])
key = NULL;
memset(&cp, 0, sizeof(cp));
cp.local = rx->local;
+ cp.peer = peer;
cp.key = rx->key;
cp.security_level = rx->min_sec_level;
cp.exclusive = rx->exclusive | p->exclusive;
cp.upgrade = p->upgrade;
cp.service_id = srx->srx_service;
- call = rxrpc_new_client_call(rx, &cp, srx, &p->call, GFP_KERNEL,
+ call = rxrpc_new_client_call(rx, &cp, &p->call, GFP_KERNEL,
atomic_inc_return(&rxrpc_debug_id));
/* The socket is now unlocked */
+ rxrpc_put_peer(peer, rxrpc_peer_put_application);
_leave(" = %p\n", call);
return call;
}
--
2.43.0
next prev parent reply other threads:[~2024-01-29 17:09 UTC|newest]
Thread overview: 362+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-29 17:00 [PATCH 6.7 000/346] 6.7.3-rc1 review Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 001/346] soundwire: bus: introduce controller_id Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 002/346] soundwire: fix initializing sysfs for same devices on different buses Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 003/346] iio: adc: ad7091r: Set alert bit in config register Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 004/346] iio: adc: ad7091r: Allow users to configure device events Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 005/346] pipe: wakeup wr_wait after setting max_usage Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 006/346] powerpc/ps3_defconfig: Disable PPC64_BIG_ENDIAN_ELF_ABI_V2 Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 007/346] ext4: allow for the last group to be marked as trimmed Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 008/346] async: Split async_schedule_node_domain() Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 009/346] async: Introduce async_schedule_dev_nocall() Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 010/346] PM: sleep: Fix possible deadlocks in core system-wide PM code Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 011/346] arm64: properly install vmlinuz.efi Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 012/346] OPP: Pass rounded rate to _set_opp() Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 013/346] btrfs: sysfs: validate scrub_speed_max value Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 014/346] crypto: lib/mpi - Fix unexpected pointer access in mpi_ec_init Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 015/346] erofs: fix lz4 inplace decompression Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 016/346] crypto: api - Disallow identical driver names Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 017/346] PM: hibernate: Enforce ordering during image compression/decompression Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 018/346] hwrng: core - Fix page fault dead lock on mmap-ed hwrng Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 019/346] crypto: s390/aes - Fix buffer overread in CTR mode Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 020/346] s390/vfio-ap: unpin pages on gisc registration failure Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 021/346] PM / devfreq: Fix buffer overflow in trans_stat_show Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 022/346] mtd: maps: vmu-flash: Fix the (mtd core) switch to ref counters Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 023/346] mtd: rawnand: Prevent crossing LUN boundaries during sequential reads Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 024/346] mtd: rawnand: Fix core interference with " Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 025/346] mtd: rawnand: Prevent sequential reads with on-die ECC engines Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 026/346] mtd: rawnand: Clarify conditions to enable continuous reads Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 027/346] soc: qcom: pmic_glink_altmode: fix port sanity check Greg Kroah-Hartman
2024-01-29 17:00 ` [PATCH 6.7 028/346] media: imx355: Enable runtime PM before registering async sub-device Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 029/346] rpmsg: virtio: Free driver_override when rpmsg_remove() Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 030/346] media: ov9734: Enable runtime PM before registering async sub-device Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 031/346] media: ov13b10: " Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 032/346] media: ov01a10: " Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 033/346] soc: fsl: cpm1: tsa: Fix __iomem addresses declaration Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 034/346] soc: fsl: cpm1: qmc: " Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 035/346] soc: fsl: cpm1: qmc: Fix rx channel reset Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 036/346] s390/vfio-ap: always filter entire AP matrix Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 037/346] s390/vfio-ap: loop over the shadow APCB when filtering guests AP configuration Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 038/346] s390/vfio-ap: let on_scan_complete() callback filter matrix and update guests APCB Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 039/346] s390/vfio-ap: reset queues filtered from the guests AP config Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 040/346] s390/vfio-ap: reset queues associated with adapter for queue unbound from driver Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 041/346] s390/vfio-ap: do not reset queue removed from host config Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 042/346] seq_buf: Make DECLARE_SEQ_BUF() usable Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 043/346] nbd: always initialize struct msghdr completely Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 044/346] mips: Fix max_mapnr being uninitialized on early stages Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 045/346] bus: mhi: host: Add alignment check for event ring read pointer Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 046/346] bus: mhi: host: Drop chan lock before queuing buffers Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 047/346] bus: mhi: host: Add spinlock to protect WP access when queueing TREs Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 048/346] parisc/firmware: Fix F-extend for PDC addresses Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 049/346] parisc/power: Fix power soft-off button emulation on qemu Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 050/346] iio: adc: ad7091r: Enable internal vref if external vref is not supplied Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 051/346] dmaengine: fsl-edma: fix eDMAv4 channel allocation issue Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 052/346] dmaengine: fix NULL pointer in channel unregistration function Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 053/346] dmaengine: idxd: Move dma_free_coherent() out of spinlocked context Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 054/346] dmaengine: xilinx: xdma: Fix the count of elapsed periods in cyclic mode Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 055/346] scsi: ufs: core: Remove the ufshcd_hba_exit() call from ufshcd_async_scan() Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 056/346] riscv: Fix module loading free order Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 057/346] riscv: Correctly free relocation hashtable on error Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 058/346] riscv: Fix relocation_hashtable size Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 059/346] riscv: Fix an off-by-one in get_early_cmdline() Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 060/346] scsi: core: Kick the requeue list after inserting when flushing Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 061/346] sh: ecovec24: Rename missed backlight field from fbdev to dev Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 062/346] smb: client: fix parsing of SMB3.1.1 POSIX create context Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 063/346] cifs: handle servers that still advertise multichannel after disabling Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 064/346] cifs: update iface_last_update on each query-and-update Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 065/346] ARM: dts: imx6q-apalis: add can power-up delay on ixora board Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 066/346] arm64: dts: qcom: sc8280xp-crd: fix eDP phy compatible Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 067/346] ARM: dts: qcom: sdx55: fix USB wakeup interrupt types Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 068/346] ARM: dts: samsung: exynos4210-i9100: Unconditionally enable LDO12 Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 069/346] ARM: dts: qcom: sdx55: fix pdc #interrupt-cells Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 070/346] arm64: dts: sprd: fix the cpu node for UMS512 Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 071/346] arm64: dts: rockchip: configure eth pad driver strength for orangepi r1 plus lts Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 072/346] arm64: dts: rockchip: Fix rk3588 USB power-domain clocks Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 073/346] arm64: dts: qcom: msm8916: Make blsp_dma controlled-remotely Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 074/346] arm64: dts: qcom: msm8939: " Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 075/346] arm64: dts: qcom: sc7180: fix USB wakeup interrupt types Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 076/346] arm64: dts: qcom: sdm845: " Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 077/346] arm64: dts: qcom: sdm670: " Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 078/346] arm64: dts: qcom: sm8150: " Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 079/346] arm64: dts: qcom: sc8180x: " Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 080/346] arm64: dts: qcom: sc7280: fix usb_1 " Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 081/346] arm64: dts: qcom: Add missing vio-supply for AW2013 Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 082/346] ARM: dts: qcom: sdx55: fix USB DP/DM HS PHY interrupts Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 083/346] arm64: dts: qcom: sdm845: " Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 084/346] arm64: dts: qcom: sdm845: fix USB SS wakeup Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 085/346] arm64: dts: qcom: sm8150: fix USB DP/DM HS PHY interrupts Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 086/346] arm64: dts: qcom: sm8150: fix USB SS wakeup Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 087/346] arm64: dts: qcom: sc8180x: fix USB DP/DM HS PHY interrupts Greg Kroah-Hartman
2024-01-29 17:01 ` [PATCH 6.7 088/346] arm64: dts: qcom: sc8180x: fix USB SS wakeup Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 089/346] arm64: dts: qcom: sdm670: fix USB DP/DM HS PHY interrupts Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 090/346] arm64: dts: qcom: sdm670: fix USB SS wakeup Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 091/346] ARM: dts: qcom: sdx55: " Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 092/346] lsm: new security_file_ioctl_compat() hook Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 093/346] dlm: use kernel_connect() and kernel_bind() Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 094/346] docs: kernel_abi.py: fix command injection Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 095/346] scripts/get_abi: fix source path leak Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 096/346] media: videobuf2-dma-sg: fix vmap callback Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 097/346] mmc: core: Use mrq.sbc in close-ended ffu Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 098/346] mmc: mmc_spi: remove custom DMA mapped buffers Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 099/346] media: i2c: st-mipid02: correct format propagation Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 100/346] media: mtk-jpeg: Fix timeout schedule error in mtk_jpegdec_worker Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 101/346] media: mtk-jpeg: Fix use after free bug due to error path handling in mtk_jpeg_dec_device_run Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 102/346] riscv: mm: Fixup compat arch_get_mmap_end Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 103/346] riscv: mm: Fixup compat mode boot failure Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 104/346] RISC-V: selftests: cbo: Ensure asm operands match constraints Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 105/346] arm64: Rename ARM64_WORKAROUND_2966298 Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 106/346] arm64: errata: Add Cortex-A510 speculative unprivileged load workaround Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 107/346] arm64/sme: Always exit sme_alloc() early with existing storage Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 108/346] arm64: entry: fix ARM64_WORKAROUND_SPECULATIVE_UNPRIV_LOAD Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 109/346] rtc: cmos: Use ACPI alarm for non-Intel x86 systems too Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 110/346] rtc: Adjust failure return code for cmos_set_alarm() Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 111/346] rtc: mc146818-lib: Adjust failure return code for mc146818_get_time() Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 112/346] rtc: Add support for configuring the UIP timeout for RTC reads Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 113/346] rtc: Extend timeout for waiting for UIP to clear to 1s Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 114/346] nouveau/vmm: dont set addr on the fail path to avoid warning Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 115/346] nouveau/gsp: handle engines in runl without nonstall interrupts Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 116/346] efi: disable mirror feature during crashkernel Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 117/346] kdump: defer the insertion of crashkernel resources Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 118/346] ubifs: ubifs_symlink: Fix memleak of inode->i_link in error path Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 119/346] thermal: gov_power_allocator: avoid inability to reset a cdev Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 120/346] fs/proc/task_mmu: move mmu notification mechanism inside mm lock Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 121/346] kexec: do syscore_shutdown() in kernel_kexec Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 122/346] selftests: mm: hugepage-vmemmap fails on 64K page size systems Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 123/346] mm/rmap: fix misplaced parenthesis of a likely() Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 124/346] mm: migrate: fix getting incorrect page mapping during page migration Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 125/346] mm/sparsemem: fix race in accessing memory_section->usage Greg Kroah-Hartman
2024-01-30 6:00 ` Jiri Slaby
2024-01-30 16:21 ` Greg Kroah-Hartman
2024-02-02 9:44 ` Vlastimil Babka
2024-02-02 9:50 ` Marco Elver
2024-02-03 1:12 ` Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 126/346] rename(): fix the locking of subdirectories Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 127/346] serial: sc16is7xx: improve regmap debugfs by using one regmap per port Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 128/346] serial: sc16is7xx: remove wasteful static buffer in sc16is7xx_regmap_name() Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 129/346] serial: sc16is7xx: remove global regmap from struct sc16is7xx_port Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 130/346] serial: sc16is7xx: remove unused line structure member Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 131/346] serial: sc16is7xx: change EFR lock to operate on each channels Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 132/346] serial: sc16is7xx: convert from _raw_ to _noinc_ regmap functions for FIFO Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 133/346] serial: sc16is7xx: fix unconditional activation of THRI interrupt Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 134/346] serial: sc16is7xx: fix invalid sc16is7xx_lines bitfield in case of probe error Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 135/346] serial: sc16is7xx: remove obsolete loop in sc16is7xx_port_irq() Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 136/346] serial: sc16is7xx: improve do/while loop in sc16is7xx_irq() Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 137/346] mm: page_alloc: unreserve highatomic page blocks before oom Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 138/346] ksmbd: set v2 lease version on lease upgrade Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 139/346] wifi: ath11k: rely on mac80211 debugfs handling for vif Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 140/346] Revert "drm/amd: Enable PCIe PME from D3" Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 141/346] ksmbd: fix potential circular locking issue in smb2_set_ea() Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 142/346] ksmbd: dont increment epoch if current state and request state are same Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 143/346] ksmbd: send lease break notification on FILE_RENAME_INFORMATION Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 144/346] ksmbd: Add missing set_freezable() for freezable kthread Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 145/346] SUNRPC: use request size to initialize bio_vec in svc_udp_sendto() Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 146/346] wifi: mac80211: fix potential sta-link leak Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 147/346] btrfs: scrub: avoid use-after-free when chunk length is not 64K aligned Greg Kroah-Hartman
2024-01-29 17:02 ` [PATCH 6.7 148/346] net/smc: fix illegal rmb_desc access in SMC-D connection dump Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 149/346] selftests: bonding: Increase timeout to 1200s Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 150/346] tcp: make sure init the accept_queues spinlocks once Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 151/346] bnxt_en: Wait for FLR to complete during probe Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 152/346] bnxt_en: Prevent kernel warning when running offline self test Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 153/346] vlan: skip nested type that is not IFLA_VLAN_QOS_MAPPING Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 154/346] llc: make llc_ui_sendmsg() more robust against bonding changes Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 155/346] llc: Drop support for ETH_P_TR_802_2 Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 156/346] udp: fix busy polling Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 157/346] idpf: distinguish vports by the dev_port attribute Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 158/346] net: fix removing a namespace with conflicting altnames Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 159/346] tun: fix missing dropped counter in tun_xdp_act Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 160/346] tun: add missing rx stats accounting " Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 161/346] dpll: fix broken error path in dpll_pin_alloc(..) Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 162/346] dpll: fix pin dump crash for rebound module Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 163/346] dpll: fix userspace availability of pins Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 164/346] dpll: fix register pin with unregistered parent pin Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 165/346] net: micrel: Fix PTP frame parsing for lan8814 Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 166/346] net/rds: Fix UBSAN: array-index-out-of-bounds in rds_cmsg_recv Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 167/346] netfs, fscache: Prevent Oops in fscache_put_cache() Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 168/346] tracing: Ensure visibility when inserting an element into tracing_map Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 169/346] afs: Hide silly-rename files from userspace Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 170/346] afs: fix the usage of read_seqbegin_or_lock() in afs_find_server*() Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 171/346] afs: Add comments on abort handling Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 172/346] afs: Turn the afs_addr_list address array into an array of structs Greg Kroah-Hartman
2024-01-29 17:03 ` Greg Kroah-Hartman [this message]
2024-01-29 17:03 ` [PATCH 6.7 174/346] afs: Handle the VIO and UAEIO aborts explicitly Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 175/346] afs: Use op->nr_iterations=-1 to indicate to begin fileserver iteration Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 176/346] afs: Wrap most op->error accesses with inline funcs Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 177/346] afs: Dont put afs_call in afs_wait_for_call_to_complete() Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 178/346] afs: Simplify error handling Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 179/346] afs: Fix error handling with lookup via FS.InlineBulkStatus Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 180/346] tcp: Add memory barrier to tcp_push() Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 181/346] selftest: Dont reuse port for SO_INCOMING_CPU test Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 182/346] netlink: fix potential sleeping issue in mqueue_flush_file Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 183/346] ipv6: init the accept_queues spinlocks in inet6_create Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 184/346] selftests: fill in some missing configs for net Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 185/346] net/sched: flower: Fix chain template offload Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 186/346] net/mlx5e: Fix operation precedence bug in port timestamping napi_poll context Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 187/346] net/mlx5e: Fix inconsistent hairpin RQT sizes Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 188/346] net/mlx5e: Fix peer flow lists handling Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 189/346] net/mlx5: Fix a WARN upon a callback command failure Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 190/346] net/mlx5: Bridge, fix multicast packets sent to uplink Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 191/346] net/mlx5: DR, Use the right GVMI number for drop action Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 192/346] net/mlx5: DR, Cant go to uplink vport on RX rule Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 193/346] net/mlx5: Use mlx5 device constant for selecting CQ period mode for ASO Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 194/346] net/mlx5e: Allow software parsing when IPsec crypto is enabled Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 195/346] net/mlx5e: Ignore IPsec replay window values on sender side Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 196/346] net/mlx5e: fix a double-free in arfs_create_groups Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 197/346] net/mlx5e: fix a potential double-free in fs_any_create_groups Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 198/346] rcu: Defer RCU kthreads wakeup when CPU is dying Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 199/346] netfilter: nft_limit: reject configurations that cause integer overflow Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 200/346] netfilter: nf_tables: restrict anonymous set and map names to 16 bytes Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 201/346] netfilter: nf_tables: validate NFPROTO_* family Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 202/346] net: stmmac: Wait a bit for the reset to take effect Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 203/346] net: mvpp2: clear BM pool before initialization Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 204/346] selftests: net: fix rps_default_mask with >32 CPUs Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 205/346] selftests: netdevsim: fix the udp_tunnel_nic test Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 206/346] xsk: recycle buffer in case Rx queue was full Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 207/346] xsk: make xsk_buff_pool responsible for clearing xdp_buff::flags Greg Kroah-Hartman
2024-01-29 17:03 ` [PATCH 6.7 208/346] xsk: fix usage of multi-buffer BPF helpers for ZC XDP Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 209/346] ice: work on pre-XDP prog frag count Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 210/346] i40e: handle multi-buffer packets that are shrunk by xdp prog Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 211/346] ice: remove redundant xdp_rxq_info registration Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 212/346] intel: xsk: initialize skb_frag_t::bv_offset in ZC drivers Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 213/346] ice: update xdp_rxq_info::frag_size for ZC enabled Rx queue Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 214/346] xdp: reflect tail increase for MEM_TYPE_XSK_BUFF_POOL Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 215/346] i40e: set xdp_rxq_info::frag_size Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 216/346] i40e: update xdp_rxq_info::frag_size for ZC enabled Rx queue Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 217/346] fjes: fix memleaks in fjes_hw_setup Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 218/346] selftests: bonding: do not test arp/ns target with mode balance-alb/tlb Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 219/346] net: fec: fix the unhandled context fault from smmu Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 220/346] tsnep: Remove FCS for XDP data path Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 221/346] tsnep: Fix XDP_RING_NEED_WAKEUP for empty fill ring Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 222/346] btrfs: zoned: fix lock ordering in btrfs_zone_activate() Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 223/346] btrfs: avoid copying BTRFS_ROOT_SUBVOL_DEAD flag to snapshot of subvolume being deleted Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 224/346] btrfs: ref-verify: free ref cache before clearing mount opt Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 225/346] btrfs: tree-checker: fix inline ref size in error messages Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 226/346] btrfs: dont warn if discard range is not aligned to sector Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 227/346] btrfs: defrag: reject unknown flags of btrfs_ioctl_defrag_range_args Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 228/346] btrfs: dont abort filesystem when attempting to snapshot deleted subvolume Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 229/346] rbd: dont move requests to the running list on errors Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 230/346] exec: Fix error handling in begin_new_exec() Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 231/346] wifi: iwlwifi: fix a memory corruption Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 232/346] nfsd: fix RELEASE_LOCKOWNER Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 233/346] ovl: mark xwhiteouts directory with overlay.opaque=x Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 234/346] hv_netvsc: Calculate correct ring size when PAGE_SIZE is not 4 Kbytes Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 235/346] netfilter: nft_chain_filter: handle NETDEV_UNREGISTER for inet/ingress basechain Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 236/346] netfilter: nf_tables: reject QUEUE/DROP verdict parameters Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 237/346] platform/x86: intel-uncore-freq: Fix types in sysfs callbacks Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 238/346] platform/x86: p2sb: Allow p2sb_bar() calls during PCI device probe Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 239/346] ksmbd: fix global oob in ksmbd_nl_policy Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 240/346] firmware: arm_scmi: Check mailbox/SMT channel for consistency Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 241/346] Revert "drivers/firmware: Move sysfb_init() from device_initcall to subsys_initcall_sync" Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 242/346] drm/amdgpu: Fix the null pointer when load rlc firmware Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 243/346] xfs: read only mounts with fsopen mount API are busted Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 244/346] gpiolib: acpi: Ignore touchpad wakeup on GPD G1619-04 Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 245/346] cpufreq: intel_pstate: Refine computation of P-state for given frequency Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 246/346] Revert "nouveau: push event block/allowing out of the fence context" Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 247/346] Revert "drm/i915/dsi: Do display on sequence later on icl+" Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 248/346] drm: Dont unref the same fb many times by mistake due to deadlock handling Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 249/346] drm/i915/psr: Only allow PSR in LPSP mode on HSW non-ULT Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 250/346] drm/bridge: nxp-ptn3460: fix i2c_master_send() error checking Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 251/346] drm: Fix TODO list mentioning non-KMS drivers Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 252/346] drm/tidss: Fix atomic_flush check Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 253/346] drm: Disable the cursor plane on atomic contexts with virtualized drivers Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 254/346] drm/virtio: Disable damage clipping if FB changed since last page-flip Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 255/346] drm: Allow drivers to indicate the damage helpers to ignore damage clips Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 256/346] drm/amd/display: fix bandwidth validation failure on DCN 2.1 Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 257/346] drm/amd/display: Disable PSR-SU on Parade 0803 TCON again Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 258/346] Revert "drm/amd/display: fix bandwidth validation failure on DCN 2.1" Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 259/346] drm/bridge: nxp-ptn3460: simplify some error checking Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 260/346] drm/amd/display: Fix a debugfs null pointer error Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 261/346] drm/amdgpu: Enable GFXOFF for Compute on GFX11 Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 262/346] drm/amdgpu: drop exp hw support check for GC 9.4.3 Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 263/346] drm/amdgpu: update regGL2C_CTRL4 value in golden setting Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 264/346] drm/amdgpu: correct the cu count for gfx v11 Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 265/346] drm/amd/pm: Fix smuv13.0.6 current clock reporting Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 266/346] drm/amd/pm: Add error log for smu v13.0.6 reset Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 267/346] drm/amd/display: Fix variable deferencing before NULL check in edp_setup_replay() Greg Kroah-Hartman
2024-01-29 17:04 ` [PATCH 6.7 268/346] drm/amd/display: Fix DML2 watermark calculation Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 269/346] drm/amd/display: Port DENTIST hang and TDR fixes to OTG disable W/A Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 270/346] drm/amd/display: Align the returned error code with legacy DP Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 271/346] drm/amd/display: Fix late derefrence dsc check in link_set_dsc_pps_packet() Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 272/346] drm/amd/display: Fix a switch statement in populate_dml_output_cfg_from_stream_state() Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 273/346] drm/amd/amdgpu: Assign GART pages to AMD device mapping Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 274/346] drm/amd/pm: Fetch current power limit from FW Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 275/346] drm/amdgpu: Avoid fetching vram vendor information Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 276/346] drm/amdgpu: Show vram vendor only if available Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 277/346] drm/amd/pm: update the power cap setting Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 278/346] drm/amdgpu/pm: Fix the power source flag error Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 279/346] drm/amd/display: Fix uninitialized variable usage in core_link_ read_dpcd() & write_dpcd() functions Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 280/346] thermal: intel: hfi: Refactor enabling code into helper functions Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 281/346] thermal: intel: hfi: Disable an HFI instance when all its CPUs go offline Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 282/346] thermal: intel: hfi: Add syscore callbacks for system-wide PM Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 283/346] media: v4l: cci: Include linux/bits.h Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 284/346] media: v4l: cci: Add macros to obtain register width and address Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 285/346] media: v4l2-cci: Add support for little-endian encoded registers Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 286/346] media: i2c: imx290: Properly encode registers as little-endian Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 287/346] btrfs: zoned: factor out prepare_allocation_zoned() Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 288/346] btrfs: zoned: optimize hint byte for zoned allocator Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 289/346] drm/amd/display: do not send commands to DMUB if DMUB is inactive from S3 Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 290/346] drm/amd/display: Refactor DMCUB enter/exit idle interface Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 291/346] drm/amd/display: Wake DMCUB before sending a command Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 292/346] drm/amd/display: Wake DMCUB before executing GPINT commands Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 293/346] drm/amd/display: Fix conversions between bytes and KB Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 294/346] drm/panel-edp: Add AUO B116XTN02, BOE NT116WHM-N21,836X2, NV116WHM-N49 V8.0 Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 295/346] drm/panel-edp: drm/panel-edp: Fix AUO B116XAK01 name and timing Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 296/346] drm/panel-edp: drm/panel-edp: Fix AUO B116XTN02 name Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 297/346] drm/amd/display: Fix hang/underflow when transitioning to ODM4:1 Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 298/346] drm/amd/display: Disconnect phantom pipe OPP from OPTC being disabled Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 299/346] drm/amd/display: Clear OPTC mem select on disable Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 300/346] drm/amd/display: Add logging resource checks Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 301/346] drm/amd/display: update pixel clock params after stream slice count change in context Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 302/346] drm/amd/display: Init link enc resources in dc_state only if res_pool presents Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 303/346] drm/amdgpu: Enable tunneling on high-priority compute queues Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 304/346] drm/amdgpu/gfx10: set UNORD_DISPATCH in compute MQDs Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 305/346] drm/amdgpu/gfx11: " Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 306/346] drm/bridge: parade-ps8640: Wait for HPD when doing an AUX transfer Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 307/346] drm: panel-simple: add missing bus flags for Tianma tm070jvhg[30/33] Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 308/346] drm/panel: samsung-s6d7aa0: drop DRM_BUS_FLAG_DE_HIGH for lsl080al02 Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 309/346] drm/panel/raydium-rm692e5: select CONFIG_DRM_DISPLAY_DP_HELPER Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 310/346] drm/bridge: sii902x: Fix probing race issue Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 311/346] drm/bridge: sii902x: Fix audio codec unregistration Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 312/346] drm/bridge: parade-ps8640: Ensure bridge is suspended in .post_disable() Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 313/346] drm/bridge: parade-ps8640: Make sure we drop the AUX mutex in the error case Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 314/346] memblock: fix crash when reserved memory is not added to memory Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 315/346] futex: Prevent the reuse of stale pi_state Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 316/346] drm/exynos: fix accidental on-stack copy of exynos_drm_plane Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 317/346] drm/exynos: gsc: minor fix for loop iteration in gsc_runtime_resume Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 318/346] firmware: arm_scmi: Use xa_insert() to store opps Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 319/346] firmware: arm_scmi: Use xa_insert() when saving raw queues Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 320/346] firmware: arm_scmi: Fix the clock protocol version for v3.2 Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 321/346] firmware: arm_ffa: Add missing rwlock_init() in ffa_setup_partitions() Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 322/346] firmware: arm_ffa: Add missing rwlock_init() for the driver partition Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 323/346] firmware: arm_ffa: Check xa_load() return value Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 324/346] platform/x86: wmi: Fix error handling in legacy WMI notify handler functions Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 325/346] gpio: eic-sprd: Clear interrupt after set the interrupt type Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 326/346] ARM: dts: exynos4212-tab3: add samsung,invert-vclk flag to fimd Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 327/346] platform/mellanox: mlxbf-pmc: Fix offset calculation for crspace events Greg Kroah-Hartman
2024-01-29 17:05 ` [PATCH 6.7 328/346] spi: intel-pci: Remove Meteor Lake-S SoC PCI ID from the list Greg Kroah-Hartman
2024-01-29 17:06 ` [PATCH 6.7 329/346] block: Move checking GENHD_FL_NO_PART to bdev_add_partition() Greg Kroah-Hartman
2024-01-29 17:06 ` [PATCH 6.7 330/346] drm/bridge: anx7625: Ensure bridge is suspended in disable() Greg Kroah-Hartman
2024-01-29 17:06 ` [PATCH 6.7 331/346] cpufreq/amd-pstate: Fix setting scaling max/min freq values Greg Kroah-Hartman
2024-01-29 17:06 ` [PATCH 6.7 332/346] spi: bcm-qspi: fix SFDP BFPT read by usig mspi read Greg Kroah-Hartman
2024-01-29 17:06 ` [PATCH 6.7 333/346] spi: spi-cadence: Reverse the order of interleaved write and read operations Greg Kroah-Hartman
2024-01-29 17:06 ` [PATCH 6.7 334/346] cifs: fix stray unlock in cifs_chan_skip_or_disable Greg Kroah-Hartman
2024-01-29 17:06 ` [PATCH 6.7 335/346] spi: fix finalize message on error return Greg Kroah-Hartman
2024-01-29 17:06 ` [PATCH 6.7 336/346] LoongArch/smp: Call rcutree_report_cpu_starting() at tlb_init() Greg Kroah-Hartman
2024-01-29 17:06 ` [PATCH 6.7 337/346] MIPS: lantiq: register smp_ops on non-smp platforms Greg Kroah-Hartman
2024-01-29 17:06 ` [PATCH 6.7 338/346] riscv: dts: sophgo: separate sg2042 mtime and mtimecmp to fit aclint format Greg Kroah-Hartman
2024-01-29 17:06 ` [PATCH 6.7 339/346] drm: bridge: samsung-dsim: Dont use FORCE_STOP_STATE Greg Kroah-Hartman
2024-01-29 17:06 ` [PATCH 6.7 340/346] platform/x86/intel/ifs: Call release_firmware() when handling errors Greg Kroah-Hartman
2024-01-29 17:06 ` [PATCH 6.7 341/346] cxl/region:Fix overflow issue in alloc_hpa() Greg Kroah-Hartman
2024-01-29 17:06 ` [PATCH 6.7 342/346] mips: Call lose_fpu(0) before initializing fcr31 in mips_set_personality_nan Greg Kroah-Hartman
2024-01-29 17:06 ` [PATCH 6.7 343/346] genirq: Initialize resend_node hlist for all interrupt descriptors Greg Kroah-Hartman
2024-01-29 17:06 ` [PATCH 6.7 344/346] clocksource: Skip watchdog check for large watchdog intervals Greg Kroah-Hartman
2024-01-29 17:06 ` [PATCH 6.7 345/346] tick/sched: Preserve number of idle sleeps across CPU hotplug events Greg Kroah-Hartman
2024-01-29 17:06 ` [PATCH 6.7 346/346] x86/entry/ia32: Ensure s32 is sign extended to s64 Greg Kroah-Hartman
2024-01-29 19:28 ` [PATCH 6.7 000/346] 6.7.3-rc1 review SeongJae Park
2024-01-29 23:05 ` Shuah Khan
2024-01-30 0:11 ` Allen
2024-01-30 4:20 ` Florian Fainelli
2024-01-30 6:45 ` Bagas Sanjaya
2024-01-30 10:20 ` Ron Economos
2024-01-30 13:02 ` Jon Hunter
2024-01-30 13:50 ` Naresh Kamboju
2024-01-30 14:33 ` Ricardo B. Marliere
2024-01-30 16:45 ` Justin Forbes
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240129170021.487079121@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=dhowells@redhat.com \
--cc=linux-afs@lists.infradead.org \
--cc=marc.dionne@auristor.com \
--cc=patches@lists.linux.dev \
--cc=sashal@kernel.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).