| To: | Valdis.Kletnieks@xxxxxx |
|---|---|
| Subject: | Re: Weird modem behaviour in 2.5.73-mm1 |
| From: | Stephen Hemminger <shemminger@xxxxxxxx> |
| Date: | Wed, 25 Jun 2003 17:35:49 -0700 |
| Cc: | netdev@xxxxxxxxxxx |
| In-reply-to: | <200306251804.h5PI4odA023590@xxxxxxxxxxxxxxxxxxxxxxx> |
| Organization: | Open Source Development Lab |
| References: | <200306242102.49356.kde@xxxxxxxxxxxxx> <200306250327.h5P3RwH8001577@xxxxxxxxxxxxxxxxxxxxxxx> <200306250418.h5P4IWdA001565@xxxxxxxxxxxxxxxxxxxxxxx> <20030625091013.573f2e7b.shemminger@xxxxxxxx> <200306251654.h5PGsUdA022467@xxxxxxxxxxxxxxxxxxxxxxx> <20030625102134.2046b04f.shemminger@xxxxxxxx> <200306251804.h5PI4odA023590@xxxxxxxxxxxxxxxxxxxxxxx> |
| Sender: | netdev-bounce@xxxxxxxxxxx |
Try this patch, it is more paranoid in some of the code paths.
I did get PPP over a null modem cable working between 2.4.18 and 2.5.73 with
the PPP patches.
diff -Nru a/drivers/net/ppp_generic.c b/drivers/net/ppp_generic.c
--- a/drivers/net/ppp_generic.c Wed Jun 25 17:32:29 2003
+++ b/drivers/net/ppp_generic.c Wed Jun 25 17:32:29 2003
@@ -1448,7 +1448,7 @@
if (ppp->vj == 0 || (ppp->flags & SC_REJ_COMP_TCP))
goto err;
- if (skb_tailroom(skb) < 124 || skb_is_nonlinear(skb) ) {
+ if (skb_tailroom(skb) < 124) {
/* copy to a new sk_buff with more tailroom */
ns = dev_alloc_skb(skb->len + 128);
if (ns == 0) {
@@ -1459,7 +1459,9 @@
memcpy(skb_put(ns, skb->len), skb->data, skb->len);
kfree_skb(skb);
skb = ns;
- }
+ } else if (!pskb_may_pull(skb, skb->len))
+ goto err;
+
len = slhc_uncompress(ppp->vj, skb->data + 2, skb->len - 2);
if (len <= 0) {
printk(KERN_DEBUG "PPP: VJ decompression error\n");
@@ -2033,11 +2035,15 @@
static void
ppp_ccp_peek(struct ppp *ppp, struct sk_buff *skb, int inbound)
{
- unsigned char *dp = skb->data + 2;
+ unsigned char *dp;
int len;
- if (!pskb_may_pull(skb, CCP_HDRLEN + 2)
- || skb->len < (len = CCP_LENGTH(dp)) + 2)
+ if (!pskb_may_pull(skb, CCP_HDRLEN + 2))
+ return;
+
+ dp = skb->data + 2;
+ len = CCP_LENGTH(dp);
+ if (skb->len < len +2)
return; /* too short */
switch (CCP_CODE(dp)) {
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | Re: [PATCH, untested] Support for PPPOE on SMP, Michal Ostrowski |
|---|---|
| Next by Date: | Re: [PATCH, untested] Support for PPPOE on SMP, David S. Miller |
| Previous by Thread: | [BK PATCHES] 2.5 net driver merges, Jeff Garzik |
| Next by Thread: | Re: Weird modem behaviour in 2.5.73-mm1, Valdis . Kletnieks |
| Indexes: | [Date] [Thread] [Top] [All Lists] |