Re: 2.4.22 oops in ATM 2.4.21 works fine

From: chas williams
Date: Thu Aug 28 2003 - 15:04:37 EST


>the 2.4.22 kernel is oopsing at start scripts, machine stays alive, but A=
>TM=20
>does not work. 2.4.21 works just fine.

try this patch:

--- linux-2.4.22/net/atm/common.c.000 Tue Aug 26 10:40:30 2003
+++ linux-2.4.22/net/atm/common.c Tue Aug 26 13:12:35 2003
@@ -672,7 +672,8 @@
}
if (try_atm_clip_ops()) {
ret_val = atm_clip_ops->clip_create(arg);
- __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
+ if (atm_clip_ops->owner)
+ __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
} else
ret_val = -ENOSYS;
goto done;
@@ -687,7 +688,8 @@
#endif
if (try_atm_clip_ops()) {
error = atm_clip_ops->atm_init_atmarp(vcc);
- __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
+ if (atm_clip_ops->owner)
+ __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
if (!error)
sock->state = SS_CONNECTED;
ret_val = error;
@@ -701,7 +703,8 @@
}
if (try_atm_clip_ops()) {
ret_val = atm_clip_ops->clip_mkip(vcc, arg);
- __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
+ if (atm_clip_ops->owner)
+ __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
} else
ret_val = -ENOSYS;
goto done;
@@ -712,7 +715,8 @@
}
if (try_atm_clip_ops()) {
ret_val = atm_clip_ops->clip_setentry(vcc, arg);
- __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
+ if (atm_clip_ops->owner)
+ __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
} else
ret_val = -ENOSYS;
goto done;
@@ -723,7 +727,8 @@
}
if (try_atm_clip_ops()) {
ret_val = atm_clip_ops->clip_encap(vcc, arg);
- __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
+ if (atm_clip_ops->owner)
+ __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
} else
ret_val = -ENOSYS;
goto done;
--- linux-2.4.22/net/atm/proc.c.000 Tue Aug 26 13:30:23 2003
+++ linux-2.4.22/net/atm/proc.c Tue Aug 26 13:31:58 2003
@@ -358,7 +358,7 @@
spin_unlock_irqrestore(&dev->lock, flags);
spin_unlock(&atm_dev_lock);
#if defined(CONFIG_ATM_CLIP) || defined(CONFIG_ATM_CLIP_MODULE)
- if (clip_info)
+ if (clip_info && atm_clip_ops->owner)
__MOD_DEC_USE_COUNT(atm_clip_ops->owner);
#endif
return strlen(buf);
@@ -367,8 +367,8 @@
}
spin_unlock(&atm_dev_lock);
#if defined(CONFIG_ATM_CLIP) || defined(CONFIG_ATM_CLIP_MODULE)
- if (clip_info)
- __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
+ if (clip_info && atm_clip_ops->owner)
+ __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
#endif
return 0;
}
@@ -458,7 +458,8 @@
if (--count) continue;
atmarp_info(n->dev,entry,NULL,buf);
read_unlock_bh(&clip_tbl_hook->lock);
- __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
+ if (atm_clip_ops->owner)
+ __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
return strlen(buf);
}
for (vcc = entry->vccs; vcc;
@@ -466,12 +467,14 @@
if (--count) continue;
atmarp_info(n->dev,entry,vcc,buf);
read_unlock_bh(&clip_tbl_hook->lock);
- __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
+ if (atm_clip_ops->owner)
+ __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
return strlen(buf);
}
}
read_unlock_bh(&clip_tbl_hook->lock);
- __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
+ if (atm_clip_ops->owner)
+ __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
return 0;
}
#endif
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/