change alloc's/free's from vmalloc/vfree to kmalloc/kfree
to use bsdcomp in none user-context (abc-stuff only). move MOD_INC_USE_COUNT before first bsd_free wich call MOD_DEC_USE_COUNT.
This commit is contained in:
parent
3fcfc40d2e
commit
d6bcb93acf
|
@ -105,6 +105,14 @@ MODULE_LICENSE("Dual BSD/GPL");
|
||||||
|
|
||||||
#define DEBUG 1
|
#define DEBUG 1
|
||||||
|
|
||||||
|
#ifdef CONFIG_ISDN_WITH_ABC
|
||||||
|
#define BSD_C_MALLOC(x) kmalloc((x),GFP_ATOMIC)
|
||||||
|
#define BSD_C_FREE(x) kfree(x)
|
||||||
|
#else
|
||||||
|
#define BSD_C_MALLOC(x) vmalloc(x)
|
||||||
|
#define BSD_C_FREE(x) vfree(x)
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A dictionary for doing BSD compress.
|
* A dictionary for doing BSD compress.
|
||||||
*/
|
*/
|
||||||
|
@ -285,7 +293,7 @@ static void bsd_free (void *state)
|
||||||
* Release the dictionary
|
* Release the dictionary
|
||||||
*/
|
*/
|
||||||
if (db->dict) {
|
if (db->dict) {
|
||||||
vfree (db->dict);
|
BSD_C_FREE (db->dict);
|
||||||
db->dict = NULL;
|
db->dict = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -293,7 +301,7 @@ static void bsd_free (void *state)
|
||||||
* Release the string buffer
|
* Release the string buffer
|
||||||
*/
|
*/
|
||||||
if (db->lens) {
|
if (db->lens) {
|
||||||
vfree (db->lens);
|
BSD_C_FREE (db->lens);
|
||||||
db->lens = NULL;
|
db->lens = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -350,14 +358,19 @@ static void *bsd_alloc (struct isdn_ppp_comp_data *data)
|
||||||
* Allocate space for the dictionary. This may be more than one page in
|
* Allocate space for the dictionary. This may be more than one page in
|
||||||
* length.
|
* length.
|
||||||
*/
|
*/
|
||||||
db->dict = (struct bsd_dict *) vmalloc (hsize * sizeof (struct bsd_dict));
|
db->dict = (struct bsd_dict *) BSD_C_MALLOC (hsize * sizeof (struct bsd_dict));
|
||||||
|
|
||||||
|
MOD_INC_USE_COUNT;
|
||||||
|
/*
|
||||||
|
** MOD_INC_USE_COUNT must be before bsd_free
|
||||||
|
** bsd_free make MOD_DEC_USE_COUNT if db != NULL
|
||||||
|
*/
|
||||||
|
|
||||||
if (!db->dict) {
|
if (!db->dict) {
|
||||||
bsd_free (db);
|
bsd_free (db);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
MOD_INC_USE_COUNT;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If this is the compression buffer then there is no length data.
|
* If this is the compression buffer then there is no length data.
|
||||||
* For decompression, the length information is needed as well.
|
* For decompression, the length information is needed as well.
|
||||||
|
@ -365,7 +378,7 @@ static void *bsd_alloc (struct isdn_ppp_comp_data *data)
|
||||||
if (!decomp)
|
if (!decomp)
|
||||||
db->lens = NULL;
|
db->lens = NULL;
|
||||||
else {
|
else {
|
||||||
db->lens = (unsigned short *) vmalloc ((maxmaxcode + 1) *
|
db->lens = (unsigned short *) BSD_C_MALLOC ((maxmaxcode + 1) *
|
||||||
sizeof (db->lens[0]));
|
sizeof (db->lens[0]));
|
||||||
if (!db->lens) {
|
if (!db->lens) {
|
||||||
bsd_free (db); /* calls MOD_DEC_USE_COUNT; */
|
bsd_free (db); /* calls MOD_DEC_USE_COUNT; */
|
||||||
|
|
Loading…
Reference in New Issue