fixes from 2.4 (same as in branch KERNEL_2_4, forget the changelog there :(

o fix typo in the pci MODULE_DEVICE_TABLE in hisax (Ingo Oeser/me)
o fix crash with dss1_divert compiled into the kernel
o fix PPP crash with compression (Andre Beck)
o fix V.110 crash

known bugs: most likely another MPPP crash remains, which I couldn't
reproduce yet.
This commit is contained in:
Kai Germaschewski 2001-01-23 17:42:59 +00:00
parent 18a3ebaa1f
commit 15696b18a0
4 changed files with 11 additions and 15 deletions

View File

@ -1757,8 +1757,8 @@ int __devinit hisax_init_pcmcia(void *pcm_iob, int *busy_flag, struct IsdnCard *
#ifndef COMPAT_HAS_2_2_PCI
static struct pci_device_id hisax_pci_tbl[] __initdata = {
#ifdef CONFIG_HISAX_FRTIZPCI
{PCI_VENDOR_ID_AVM, PCI_DEVICE_ID_AVM_FRITZ, PCI_ANY_ID, PCI_ANY_ID},
#ifdef CONFIG_HISAX_FRITZPCI
{PCI_VENDOR_ID_AVM, PCI_DEVICE_ID_AVM_A1, PCI_ANY_ID, PCI_ANY_ID},
#endif
#ifdef CONFIG_HISAX_DIEHLDIVA
{PCI_VENDOR_ID_EICON, PCI_DEVICE_ID_EICON_DIVA20, PCI_ANY_ID, PCI_ANY_ID},

View File

@ -37,6 +37,9 @@
#ifdef CONFIG_ISDN_AUDIO
#include "isdn_audio.h"
#endif
#ifdef CONFIG_ISDN_DIVERSION_MODULE
#define CONFIG_ISDN_DIVERSION
#endif
#ifdef CONFIG_ISDN_DIVERSION
#include <linux/isdn_divertif.h>
#endif CONFIG_ISDN_DIVERSION
@ -67,7 +70,7 @@ static char *isdn_audio_revision = ": none $";
extern char *isdn_v110_revision;
#ifdef CONFIG_ISDN_DIVERSION
isdn_divert_if *divert_if; /* interface to diversion module */
static isdn_divert_if *divert_if; /* = NULL */
#endif CONFIG_ISDN_DIVERSION
@ -2197,7 +2200,6 @@ set_global_features(void)
}
#ifdef CONFIG_ISDN_DIVERSION
extern isdn_divert_if *divert_if;
static char *map_drvname(int di)
{

View File

@ -2350,8 +2350,7 @@ static struct sk_buff *isdn_ppp_decompress(struct sk_buff *skb,struct ippp_struc
rsparm.data = rsdata;
rsparm.maxdlen = IPPP_RESET_MAXDATABYTES;
/* !!!HACK,HACK,HACK!!! 2048 is only assumed */
skb_out = dev_alloc_skb(2048);
skb_out = dev_alloc_skb(is->mru + PPP_HDRLEN);
len = ipc->decompress(stat, skb, skb_out, &rsparm);
kfree_skb(skb);
if (len <= 0) {
@ -2372,14 +2371,9 @@ static struct sk_buff *isdn_ppp_decompress(struct sk_buff *skb,struct ippp_struc
kfree_skb(skb_out);
return NULL;
}
if (isdn_ppp_skip_ac(ri, skb) < 0) {
kfree_skb(skb);
return NULL;
}
*proto = isdn_ppp_strip_proto(skb);
*proto = isdn_ppp_strip_proto(skb_out);
if (*proto < 0) {
kfree_skb(skb);
kfree_skb(skb_out);
return NULL;
}
return skb_out;

View File

@ -102,7 +102,7 @@ isdn_v110_open(unsigned char key, int hdrlen, int maxsize)
int i;
isdn_v110_stream *v;
if ((v = kmalloc(sizeof(isdn_v110_stream), GFP_KERNEL)) == NULL)
if ((v = kmalloc(sizeof(isdn_v110_stream), GFP_ATOMIC)) == NULL)
return NULL;
memset(v, 0, sizeof(isdn_v110_stream));
v->key = key;
@ -134,7 +134,7 @@ isdn_v110_open(unsigned char key, int hdrlen, int maxsize)
v->b = 0;
v->skbres = hdrlen;
v->maxsize = maxsize - hdrlen;
if ((v->encodebuf = kmalloc(maxsize, GFP_KERNEL)) == NULL) {
if ((v->encodebuf = kmalloc(maxsize, GFP_ATOMIC)) == NULL) {
kfree(v);
return NULL;
}