lkml.org 
[lkml]   [2004]   [Nov]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [PATCH] dss1_divert ISDN module compile fix for kernel 2.6.8.1
Dear Linus and Bartlomiej,

> Moreover, you must make sure that there is no other code (ie. in generic
> ISDN code) doing cli() stuff on objects that you are protecting by a spinlock
> etc., I've checked divert driver and it looks OK.
>
>
>>OK, thank you. I went into the copy/paste trap. I corrected the patch to
>>a global spinlock and tested it successfully.
>
>
> Great.
>
> Please do "interdiff" between the old and the new patch
> and send it to Linus (he has already merged the old patch).
the interdiff patch is appended to this mail and the link is:

http://ls7-www.cs.uni-dortmund.de/~mork/dss1_divert-patch1-2-patch2.diff

Signed-off-by: Steffen A. Mork <linux-dev@morknet.de>

> Thanks.
Thank you.



> Bartlomiej
Steffen

diff -uprN -X dontdiff linux-2.6.8.1-patch1/drivers/isdn/divert/divert_init.c linux-2.6.8.1-patch2/drivers/isdn/divert/divert_init.c
--- linux-2.6.8.1-patch1/drivers/isdn/divert/divert_init.c 2004-11-05 08:50:02.000000000 +0100
+++ linux-2.6.8.1-patch2/drivers/isdn/divert/divert_init.c 2004-11-17 17:50:38.000000000 +0100
@@ -62,7 +62,6 @@ static int __init divert_init(void)
static void __exit divert_exit(void)
{
unsigned long flags;
- spinlock_t divert_lock = SPIN_LOCK_UNLOCKED;
int i;

spin_lock_irqsave(&divert_lock, flags);
diff -uprN -X dontdiff linux-2.6.8.1-patch1/drivers/isdn/divert/divert_procfs.c linux-2.6.8.1-patch2/drivers/isdn/divert/divert_procfs.c
--- linux-2.6.8.1-patch1/drivers/isdn/divert/divert_procfs.c 2004-11-05 08:49:57.000000000 +0100
+++ linux-2.6.8.1-patch2/drivers/isdn/divert/divert_procfs.c 2004-11-17 17:42:00.000000000 +0100
@@ -182,7 +182,6 @@ isdn_divert_ioctl(struct inode *inode, s
divert_ioctl dioctl;
int i;
unsigned long flags;
- spinlock_t divert_lock = SPIN_LOCK_UNLOCKED;
divert_rule *rulep;
char *cp;

diff -uprN -X dontdiff linux-2.6.8.1-patch1/drivers/isdn/divert/isdn_divert.c linux-2.6.8.1-patch2/drivers/isdn/divert/isdn_divert.c
--- linux-2.6.8.1-patch1/drivers/isdn/divert/isdn_divert.c 2004-11-05 08:49:20.000000000 +0100
+++ linux-2.6.8.1-patch2/drivers/isdn/divert/isdn_divert.c 2004-11-17 19:39:32.000000000 +0100
@@ -48,13 +48,14 @@ static struct deflect_struc *table_head
static struct deflect_struc *table_tail = NULL;
static unsigned char extern_wait_max = 4; /* maximum wait in s for external process */

+spinlock_t divert_lock = SPIN_LOCK_UNLOCKED;
+
/***************************/
/* timer callback function */
/***************************/
static void deflect_timer_expire(ulong arg)
{
unsigned long flags;
- spinlock_t divert_lock = SPIN_LOCK_UNLOCKED;
struct call_struc *cs = (struct call_struc *) arg;

spin_lock_irqsave(&divert_lock, flags);
@@ -109,7 +110,6 @@ int cf_command(int drvid, int mode,
u_char proc, char *msn,
u_char service, char *fwd_nr, ulong *procid)
{ unsigned long flags;
- spinlock_t divert_lock = SPIN_LOCK_UNLOCKED;
int retval,msnlen;
int fwd_len;
char *p,*ielenp,tmp[60];
@@ -204,7 +204,6 @@ int deflect_extern_action(u_char cmd, ul
{ struct call_struc *cs;
isdn_ctrl ic;
unsigned long flags;
- spinlock_t divert_lock = SPIN_LOCK_UNLOCKED;
int i;

if ((cmd & 0x7F) > 2) return(-EINVAL); /* invalid command */
@@ -275,7 +274,6 @@ int deflect_extern_action(u_char cmd, ul
int insertrule(int idx, divert_rule *newrule)
{ struct deflect_struc *ds,*ds1=NULL;
unsigned long flags;
- spinlock_t divert_lock = SPIN_LOCK_UNLOCKED;

if (!(ds = (struct deflect_struc *) kmalloc(sizeof(struct deflect_struc),
GFP_KERNEL)))
@@ -321,7 +319,6 @@ int insertrule(int idx, divert_rule *new
int deleterule(int idx)
{ struct deflect_struc *ds,*ds1;
unsigned long flags;
- spinlock_t divert_lock = SPIN_LOCK_UNLOCKED;

if (idx < 0)
{ spin_lock_irqsave(&divert_lock, flags);
@@ -389,7 +386,6 @@ divert_rule *getruleptr(int idx)
int isdn_divert_icall(isdn_ctrl *ic)
{ int retval = 0;
unsigned long flags;
- spinlock_t divert_lock = SPIN_LOCK_UNLOCKED;
struct call_struc *cs = NULL;
struct deflect_struc *dv;
char *p,*p1;
@@ -540,7 +536,6 @@ int isdn_divert_icall(isdn_ctrl *ic)
void deleteprocs(void)
{ struct call_struc *cs, *cs1;
unsigned long flags;
- spinlock_t divert_lock = SPIN_LOCK_UNLOCKED;

spin_lock_irqsave(&divert_lock, flags);
cs = divert_head;
@@ -698,7 +693,6 @@ int prot_stat_callback(isdn_ctrl *ic)
{ struct call_struc *cs, *cs1;
int i;
unsigned long flags;
- spinlock_t divert_lock = SPIN_LOCK_UNLOCKED;

cs = divert_head; /* start of list */
cs1 = NULL;
@@ -790,7 +784,6 @@ int prot_stat_callback(isdn_ctrl *ic)
int isdn_divert_stat_callback(isdn_ctrl *ic)
{ struct call_struc *cs, *cs1;
unsigned long flags;
- spinlock_t divert_lock = SPIN_LOCK_UNLOCKED;
int retval;

retval = -1;
diff -uprN -X dontdiff linux-2.6.8.1-patch1/drivers/isdn/divert/isdn_divert.h linux-2.6.8.1-patch2/drivers/isdn/divert/isdn_divert.h
--- linux-2.6.8.1-patch1/drivers/isdn/divert/isdn_divert.h 2004-08-14 12:54:51.000000000 +0200
+++ linux-2.6.8.1-patch2/drivers/isdn/divert/isdn_divert.h 2004-11-17 18:59:16.000000000 +0100
@@ -114,6 +114,8 @@ struct divert_info
/**************/
/* Prototypes */
/**************/
+extern spinlock_t divert_lock;
+
extern ulong if_used; /* number of interface users */
extern int divert_dev_deinit(void);
extern int divert_dev_init(void);


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 14:08    [W:0.056 / U:0.204 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site