zero length frame filtering in af_rose.c
Subsystems (2)
PATCH 1/1 zero length frame filtering in af_rose.c
Since changeset e79ad711a0108475c1b3a03815527e7237020b08 from mainline.
From: David S. Miller <[email protected]>
empty packet can be transmitted on connected socket for datagram protocols.
However, this patch broke a high level application using ROSE network protocole with connected datagram.
Bulletin Board Stations perform bulletins forwarding between BBS stations by radio and ROSE network using a forward protocole.
Now, if for some reason, a sending buffer in the application software happens to be empty at a specific moment, ROSE relays an empty packet via unfiltred packet socket.
When received, this ROSE packet introduces perturbations of BBS data forwarding protocole, for the application protocole is waiting for something else than an empty packet.
We agree that a more carefull programming of the application protocole would avoid this situation and we are willing to debug it.
But, as an empty frame is no use, and does not have any meaning for ROSE protocole, we may consider filtering zero length data both when sending and receiving socket data.
The proposed patch repairs BBS data exchange through ROSE network that were broken since 2.6.22.11 kernel.
---
net/rose/af_rose.c | 10 ++++++++++
1 files changed, 10 insertions(+), 0 deletions(-)
net/rose/af_rose.c +0 -0
@@ -1075,6 +1075,10 @@ static int rose_sendmsg(struct kiocb *iocb, struct
socket *sock,
unsigned char *asmptr;
int n, size, qbit = 0;
+ /* ROSE empty frame has no meaning : don't send */
+ if (len == 0)
+ return 0;
+
if (msg->msg_flags & ~(MSG_DONTWAIT|MSG_EOR|MSG_CMSG_COMPAT)) return -EINVAL;
@@ -1268,6 +1272,12 @@ static int rose_recvmsg(struct kiocb *iocb, struct socket *sock,
skb_reset_transport_header(skb);
copied = skb->len;
+ /* ROSE empty frame has no meaning : ignore it */
+ if (copied == 0) {
+ skb_free_datagram(sk, skb);
+ return copied;
+ }
+
if (copied > size) {
copied = size;
msg->msg_flags |= MSG_TRUNC;
Signature · 1 line
1.5.5
David Miller
maintainerFrom: Bernard Pidoux <[email protected]>
Date: Sat, 22 Nov 2008 11:08:52 +0100
Quoted 6 lines
+ }
+
if (copied > size) {
copied = size;
msg->msg_flags |=MSG_TRUNC;
This patch, as well as your changelog message, have space and tab characters severely corrupted by your email client.
Please fix this and resubmit.
In fact, this corruption is so severe I want you to email this patch to yourself and try to apply it. Do not resubmit this until you can email the patch to yourself and apply it cleanly.
Thank you.
--
To unsubscribe from this list: send the line "unsubscribe linux-hams" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html