Skip to content

Commit 404dbd2

Browse files
quic-clewPaolo Abeni
authored andcommitted
net: qrtr: ns: Ignore ENODEV failures in ns
Ignore the ENODEV failures returned by kernel_sendmsg(). These errors indicate that either the local port has been closed or the remote has gone down. Neither of these scenarios are fatal and will eventually be handled through packets that are later queued on the control port. Signed-off-by: Chris Lew <[email protected]> Signed-off-by: Sarannya Sasikumar <[email protected]> Reviewed-by: Simon Horman <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Paolo Abeni <[email protected]>
1 parent 3873d0d commit 404dbd2

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

net/qrtr/ns.c

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,8 @@ static int service_announce_new(struct sockaddr_qrtr *dest,
132132
return kernel_sendmsg(qrtr_ns.sock, &msg, &iv, 1, sizeof(pkt));
133133
}
134134

135-
static int service_announce_del(struct sockaddr_qrtr *dest,
136-
struct qrtr_server *srv)
135+
static void service_announce_del(struct sockaddr_qrtr *dest,
136+
struct qrtr_server *srv)
137137
{
138138
struct qrtr_ctrl_pkt pkt;
139139
struct msghdr msg = { };
@@ -157,10 +157,10 @@ static int service_announce_del(struct sockaddr_qrtr *dest,
157157
msg.msg_namelen = sizeof(*dest);
158158

159159
ret = kernel_sendmsg(qrtr_ns.sock, &msg, &iv, 1, sizeof(pkt));
160-
if (ret < 0)
160+
if (ret < 0 && ret != -ENODEV)
161161
pr_err("failed to announce del service\n");
162162

163-
return ret;
163+
return;
164164
}
165165

166166
static void lookup_notify(struct sockaddr_qrtr *to, struct qrtr_server *srv,
@@ -188,7 +188,7 @@ static void lookup_notify(struct sockaddr_qrtr *to, struct qrtr_server *srv,
188188
msg.msg_namelen = sizeof(*to);
189189

190190
ret = kernel_sendmsg(qrtr_ns.sock, &msg, &iv, 1, sizeof(pkt));
191-
if (ret < 0)
191+
if (ret < 0 && ret != -ENODEV)
192192
pr_err("failed to send lookup notification\n");
193193
}
194194

@@ -207,6 +207,9 @@ static int announce_servers(struct sockaddr_qrtr *sq)
207207
xa_for_each(&node->servers, index, srv) {
208208
ret = service_announce_new(sq, srv);
209209
if (ret < 0) {
210+
if (ret == -ENODEV)
211+
continue;
212+
210213
pr_err("failed to announce new service\n");
211214
return ret;
212215
}
@@ -369,7 +372,7 @@ static int ctrl_cmd_bye(struct sockaddr_qrtr *from)
369372
msg.msg_namelen = sizeof(sq);
370373

371374
ret = kernel_sendmsg(qrtr_ns.sock, &msg, &iv, 1, sizeof(pkt));
372-
if (ret < 0) {
375+
if (ret < 0 && ret != -ENODEV) {
373376
pr_err("failed to send bye cmd\n");
374377
return ret;
375378
}
@@ -443,7 +446,7 @@ static int ctrl_cmd_del_client(struct sockaddr_qrtr *from,
443446
msg.msg_namelen = sizeof(sq);
444447

445448
ret = kernel_sendmsg(qrtr_ns.sock, &msg, &iv, 1, sizeof(pkt));
446-
if (ret < 0) {
449+
if (ret < 0 && ret != -ENODEV) {
447450
pr_err("failed to send del client cmd\n");
448451
return ret;
449452
}

0 commit comments

Comments
 (0)