Messages in this thread Patch in this message | | | Date | Fri, 14 Jul 2000 00:40:21 +1000 | From | Andrew Morton <> | Subject | Re: Result of compiling with `-W' |
| |
Jakub Jelinek wrote: > > Also, if you cast an unsigned long to signed (which means int), you break all the 64bit > ports (by killing top 32bits).
There were several of these. Second attempt attached. Please treat this as 'suggested changes'.
I have taken out the setrlimit() patch.--- linux-2.4.0-test4-pre6/drivers/net/3c515.c Thu Jul 13 20:42:32 2000 +++ linux-akpm/drivers/net/3c515.c Thu Jul 13 21:22:27 2000 @@ -1049,6 +1049,7 @@ cli(); outw(DownStall, ioaddr + EL3_CMD); /* Wait for the stall to complete. */ + /* BUG! `i' is unsigned */ for (i = 20; i >= 0; i--) if ((inw(ioaddr + EL3_STATUS) & CmdInProgress) == 0) break; --- linux-2.4.0-test4-pre6/net/ax25/af_ax25.c Tue Jul 11 22:21:17 2000 +++ linux-akpm/net/ax25/af_ax25.c Thu Jul 13 21:21:39 2000 @@ -519,13 +519,13 @@ break; case AX25_T3: - if (ax25_ctl.arg < 0) + if ((signed long)ax25_ctl.arg < 0) return -EINVAL; ax25->t3 = ax25_ctl.arg * HZ; break; case AX25_IDLE: - if (ax25_ctl.arg < 0) + if ((signed long)ax25_ctl.arg < 0) return -EINVAL; ax25->idle = ax25_ctl.arg * 60 * HZ; break; --- linux-2.4.0-test4-pre6/net/decnet/af_decnet.c Sat Jun 24 15:39:47 2000 +++ linux-akpm/net/decnet/af_decnet.c Thu Jul 13 21:24:05 2000 @@ -1199,7 +1199,7 @@ case TIOCOUTQ: amount = sk->sndbuf - atomic_read(&sk->wmem_alloc); - if (amount < 0) + if ((signed long)amount < 0) amount = 0; err = put_user(amount, (int *)arg); break; --- linux-2.4.0-test4-pre6/drivers/isdn/avmb1/b1.c Tue Jul 11 22:21:14 2000 +++ linux-akpm/drivers/isdn/avmb1/b1.c Thu Jul 13 21:28:41 2000 @@ -601,7 +601,7 @@ ApplId = (unsigned) b1_get_word(card->port); MsgLen = b1_get_slice(card->port, card->msgbuf); card->msgbuf[MsgLen--] = 0; - while ( MsgLen >= 0 + while ( (signed)MsgLen >= 0 && ( card->msgbuf[MsgLen] == '\n' || card->msgbuf[MsgLen] == '\r')) card->msgbuf[MsgLen--] = 0; @@ -612,7 +612,7 @@ case RECEIVE_DEBUGMSG: MsgLen = b1_get_slice(card->port, card->msgbuf); card->msgbuf[MsgLen--] = 0; - while ( MsgLen >= 0 + while ( (signed)MsgLen >= 0 && ( card->msgbuf[MsgLen] == '\n' || card->msgbuf[MsgLen] == '\r')) card->msgbuf[MsgLen--] = 0; --- linux-2.4.0-test4-pre6/fs/binfmt_aout.c Tue Jul 11 22:21:16 2000 +++ linux-akpm/fs/binfmt_aout.c Thu Jul 13 21:38:07 2000 @@ -342,7 +342,7 @@ error = bprm->file->f_op->read(bprm->file, (char *)text_addr, ex.a_text+ex.a_data, &pos); - if (error < 0) { + if ((signed long)error < 0) { send_sig(SIGKILL, current, 0); return error; } --- linux-2.4.0-test4-pre6/drivers/isdn/avmb1/c4.c Tue Jul 11 22:21:14 2000 +++ linux-akpm/drivers/isdn/avmb1/c4.c Thu Jul 13 21:42:18 2000 @@ -679,7 +679,7 @@ ApplId = (unsigned) _get_word(&p); MsgLen = _get_slice(&p, card->msgbuf); card->msgbuf[MsgLen--] = 0; - while ( MsgLen >= 0 + while ( (signed)MsgLen >= 0 && ( card->msgbuf[MsgLen] == '\n' || card->msgbuf[MsgLen] == '\r')) card->msgbuf[MsgLen--] = 0; @@ -690,7 +690,7 @@ case RECEIVE_DEBUGMSG: MsgLen = _get_slice(&p, card->msgbuf); card->msgbuf[MsgLen--] = 0; - while ( MsgLen >= 0 + while ( (signed)MsgLen >= 0 && ( card->msgbuf[MsgLen] == '\n' || card->msgbuf[MsgLen] == '\r')) card->msgbuf[MsgLen--] = 0; --- linux-2.4.0-test4-pre6/drivers/video/clgenfb.c Tue Jul 11 22:21:16 2000 +++ linux-akpm/drivers/video/clgenfb.c Thu Jul 13 21:44:02 2000 @@ -875,9 +875,9 @@ } else if (_par->var.yres_virtual == -1) { /* FIXME: maximize Y virtual resolution only */ } - if (_par->var.xoffset < 0) + if ((signed)_par->var.xoffset < 0) _par->var.xoffset = 0; - if (_par->var.yoffset < 0) + if ((signed)_par->var.yoffset < 0) _par->var.yoffset = 0; /* truncate xoffset and yoffset to maximum if too high */ --- linux-2.4.0-test4-pre6/drivers/char/epca.c Tue Jul 11 22:21:14 2000 +++ linux-akpm/drivers/char/epca.c Thu Jul 13 21:52:48 2000 @@ -3771,7 +3771,7 @@ case 5: board.port = (unsigned char *)ints[index]; - if (board.port <= 0) + if ((long)board.port <= 0) { printk(KERN_ERR "<Error> - epca_setup: Invalid io port 0x%x\n", (unsigned int)board.port); invalid_lilo_config = 1; @@ -3783,7 +3783,7 @@ case 6: board.membase = (unsigned char *)ints[index]; - if (board.membase <= 0) + if ((long)board.membase <= 0) { printk(KERN_ERR "<Error> - epca_setup: Invalid memory base 0x%x\n",(unsigned int)board.membase); invalid_lilo_config = 1; --- linux-2.4.0-test4-pre6/drivers/video/riva/fbdev.c Tue Jul 11 22:21:16 2000 +++ linux-akpm/drivers/video/riva/fbdev.c Thu Jul 13 21:55:17 2000 @@ -929,9 +929,9 @@ /* FIXME: maximize Y virtual resolution only */ } - if (v.xoffset < 0) + if ((signed)v.xoffset < 0) v.xoffset = 0; - if (v.yoffset < 0) + if ((signed)v.yoffset < 0) v.yoffset = 0; /* truncate xoffset and yoffset to maximum if too high */ --- linux-2.4.0-test4-pre6/drivers/cdrom/gscd.c Tue Jul 11 22:21:14 2000 +++ linux-akpm/drivers/cdrom/gscd.c Thu Jul 13 22:01:38 2000 @@ -996,7 +996,7 @@ void __exit exit_gscd(void) { - del_timer_async(&gscd_timer); + del_timer(&gscd_timer); devfs_unregister(devfs_find_handle(NULL, "gscd", 0, 0, DEVFS_SPECIAL_BLK, 0)); --- linux-2.4.0-test4-pre6/drivers/i2c/i2c-core.c Tue Jul 11 22:21:14 2000 +++ linux-akpm/drivers/i2c/i2c-core.c Thu Jul 13 22:05:56 2000 @@ -485,7 +485,7 @@ int i,j,k,order_nr,len=0,len_total; int order[I2C_CLIENT_MAX]; - if (count < 0) + if ((signed)count < 0) return -EINVAL; len_total = file->f_pos + count; /* Too bad if this gets longer (unlikely) */ --- linux-2.4.0-test4-pre6/drivers/net/fc/iph5526.c Sat Jun 24 15:39:44 2000 +++ linux-akpm/drivers/net/fc/iph5526.c Thu Jul 13 22:12:19 2000 @@ -3769,7 +3769,7 @@ for (i = 0; i <= MAX_FC_CARDS; i++) fc[i] = NULL; - for (i = 0; i < clone_list[i].vendor_id != 0; i++) + for (i = 0; i < clone_list[i].vendor_id; i++) while ((pdev = pci_find_device(clone_list[i].vendor_id, clone_list[i].device_id, pdev))) { unsigned short pci_command; if (pci_enable_device(pdev)) --- linux-2.4.0-test4-pre6/drivers/sound/emu10k1/main.c Sat Jun 24 15:39:45 2000 +++ linux-akpm/drivers/sound/emu10k1/main.c Thu Jul 13 22:21:16 2000 @@ -664,22 +664,22 @@ init_waitqueue_head(&card->open_wait); /* Register devices */ - if ((card->audio1_num = register_sound_dsp(&emu10k1_audio_fops, -1)) < 0) { + if ((signed long)(card->audio1_num = register_sound_dsp(&emu10k1_audio_fops, -1)) < 0) { printk(KERN_ERR "emu10k1: cannot register first audio device!\n"); goto err_dev0; } - if ((card->audio2_num = register_sound_dsp(&emu10k1_audio_fops, -1)) < 0) { + if ((signed long)(card->audio2_num = register_sound_dsp(&emu10k1_audio_fops, -1)) < 0) { printk(KERN_ERR "emu10k1: cannot register second audio device!\n"); goto err_dev1; } - if ((card->mixer_num = register_sound_mixer(&emu10k1_mixer_fops, -1)) < 0) { + if ((signed long)(card->mixer_num = register_sound_mixer(&emu10k1_mixer_fops, -1)) < 0) { printk(KERN_ERR "emu10k1: cannot register mixer device!\n"); goto err_dev2; } - if ((card->midi_num = register_sound_midi(&emu10k1_midi_fops, -1)) < 0) { + if ((signed long)(card->midi_num = register_sound_midi(&emu10k1_midi_fops, -1)) < 0) { printk(KERN_ERR "emu10k1: cannot register midi device!\n"); goto err_dev3; } --- linux-2.4.0-test4-pre6/net/atm/mpoa_proc.c Tue Jul 11 22:21:17 2000 +++ linux-akpm/net/atm/mpoa_proc.c Thu Jul 13 22:28:53 2000 @@ -5,6 +5,7 @@ #include <linux/kernel.h> #include <linux/string.h> #include <linux/mm.h> +#include <linux/module.h> #include <linux/proc_fs.h> #include <linux/time.h> #include <asm/uaccess.h> @@ -108,7 +109,7 @@ eg_cache_entry *eg_entry; struct timeval now; unsigned char ip_string[16]; - if(count < 0) + if((signed long)count < 0) return -EINVAL; if(count == 0) return 0; @@ -169,7 +170,7 @@ char *page, c; const char *tmp; - if (nbytes < 0) return -EINVAL; + if ((signed long)nbytes < 0) return -EINVAL; if (nbytes == 0) return 0; if (nbytes > PAGE_SIZE) nbytes = PAGE_SIZE-1; --- linux-2.4.0-test4-pre6/drivers/acpi/namespace/nsutils.c Tue Jul 11 22:21:13 2000 +++ linux-akpm/drivers/acpi/namespace/nsutils.c Thu Jul 13 22:29:37 2000 @@ -299,7 +299,7 @@ u32 i = 0; u32 j = 0; - if (internal_name_length < 0 || + if ((signed)internal_name_length < 0 || !internal_name || !converted_name_length || !converted_name) --- linux-2.4.0-test4-pre6/net/sunrpc/pmap_clnt.c Sat Jun 24 15:39:47 2000 +++ linux-akpm/net/sunrpc/pmap_clnt.c Thu Jul 13 22:33:29 2000 @@ -171,7 +171,7 @@ error = rpc_call(pmap_clnt, port? PMAP_SET : PMAP_UNSET, &map, okay, 0); - if (error < 0) { + if ((signed)error < 0) { printk(KERN_WARNING "RPC: failed to contact portmap (errno %d).\n", error); --- linux-2.4.0-test4-pre6/net/atm/proc.c Tue Jul 11 22:21:17 2000 +++ linux-akpm/net/atm/proc.c Thu Jul 13 22:35:40 2000 @@ -495,7 +495,7 @@ unsigned long page; int length; - if (count < 0) return -EINVAL; + if ((signed long)count < 0) return -EINVAL; page = get_free_page(GFP_KERNEL); if (!page) return -ENOMEM; dev = ((struct proc_dir_entry *) file->f_dentry->d_inode->u.generic_ip) @@ -524,7 +524,7 @@ info = ((struct proc_dir_entry *) file->f_dentry->d_inode->u.generic_ip) ->data; - if (count < 0) return -EINVAL; + if ((signed long)count < 0) return -EINVAL; page = get_free_page(GFP_KERNEL); if (!page) return -ENOMEM; length = (*info)(*pos,(char *) page); --- linux-2.4.0-test4-pre6/drivers/sound/pss.c Wed Mar 8 08:40:24 2000 +++ linux-akpm/drivers/sound/pss.c Thu Jul 13 22:36:36 2000 @@ -233,7 +233,7 @@ unsigned long i, limit = jiffies + HZ/10; outw(0x2000, REG(PSS_CONTROL)); - for (i = 0; i < 32768 && (limit-jiffies >= 0); i++) + for (i = 0; i < 32768 && ((signed long)(limit-jiffies) >= 0); i++) inw(REG(PSS_CONTROL)); outw(0x0000, REG(PSS_CONTROL)); return 1; @@ -332,11 +332,11 @@ outw(0, REG(PSS_DATA)); limit = jiffies + HZ/10; - for (i = 0; i < 32768 && (limit - jiffies >= 0); i++) + for (i = 0; i < 32768 && ((signed long)(limit - jiffies) >= 0); i++) val = inw(REG(PSS_STATUS)); limit = jiffies + HZ/10; - for (i = 0; i < 32768 && (limit-jiffies >= 0); i++) + for (i = 0; i < 32768 && ((signed long)(limit-jiffies) >= 0); i++) { val = inw(REG(PSS_STATUS)); if (val & 0x4000) --- linux-2.4.0-test4-pre6/drivers/net/wan/sdla_chdlc.c Thu Jul 13 20:42:32 2000 +++ linux-akpm/drivers/net/wan/sdla_chdlc.c Thu Jul 13 22:42:59 2000 @@ -544,17 +544,17 @@ } else { /* Do not ignore keepalives */ card->u.c.kpalv_tx = - (conf->keepalive_tx_tmr - MIN_Tx_KPALV_TIMER) >= 0 ? + ((signed)(conf->keepalive_tx_tmr - MIN_Tx_KPALV_TIMER)) >= 0 ? min (conf->keepalive_tx_tmr, MAX_Tx_KPALV_TIMER) : DEFAULT_Tx_KPALV_TIMER; card->u.c.kpalv_rx = - (conf->keepalive_rx_tmr - MIN_Rx_KPALV_TIMER) >= 0 ? + ((signed)(conf->keepalive_rx_tmr - MIN_Rx_KPALV_TIMER)) >= 0 ? min (conf->keepalive_rx_tmr, MAX_Rx_KPALV_TIMER) : DEFAULT_Rx_KPALV_TIMER; card->u.c.kpalv_err = - (conf->keepalive_err_margin - MIN_KPALV_ERR_TOL) >= 0 ? + ((signed)(conf->keepalive_err_margin - MIN_KPALV_ERR_TOL)) >= 0 ? min (conf->keepalive_err_margin, MAX_KPALV_ERR_TOL) : DEFAULT_KPALV_ERR_TOL; } @@ -563,7 +563,7 @@ /* Setup slarp timer to control delay between slarps */ card->u.c.slarp_timer = - (conf->slarp_timer - MIN_SLARP_REQ_TIMER) >=0 ? + (signed)((conf->slarp_timer - MIN_SLARP_REQ_TIMER)) >=0 ? min (conf->slarp_timer, MAX_SLARP_REQ_TIMER) : DEFAULT_SLARP_REQ_TIMER; --- linux-2.4.0-test4-pre6/ipc/shm.c Tue Jul 11 22:21:17 2000 +++ linux-akpm/ipc/shm.c Thu Jul 13 22:44:52 2000 @@ -796,7 +796,7 @@ struct shmid_kernel *shp; int err, id = 0; - if (size < SHMMIN) + if ((signed long)size < SHMMIN) return -EINVAL; down(&shm_ids.sem); --- linux-2.4.0-test4-pre6/fs/coda/sysctl.c Sat Jun 24 15:39:46 2000 +++ linux-akpm/fs/coda/sysctl.c Thu Jul 13 22:57:58 2000 @@ -176,7 +176,7 @@ return ( pentry->count == 0 ) ? 0 : pentry->time_sum / pentry->count; } -static inline unsigned long absolute( unsigned long x ) +static inline unsigned long absolute( long x ) { return x >= 0 ? x : -x; } @@ -188,7 +188,7 @@ if ( x == 0 ) return 0; - if ( x < 0) + if ( (signed)x < 0) x = -x; while ( y ) { --- linux-2.4.0-test4-pre6/drivers/isdn/avmb1/t1isa.c Fri Apr 14 02:03:03 2000 +++ linux-akpm/drivers/isdn/avmb1/t1isa.c Thu Jul 13 22:58:52 2000 @@ -283,7 +283,7 @@ ApplId = (unsigned) b1_get_word(card->port); MsgLen = t1_get_slice(card->port, card->msgbuf); card->msgbuf[MsgLen--] = 0; - while ( MsgLen >= 0 + while ( (signed)MsgLen >= 0 && ( card->msgbuf[MsgLen] == '\n' || card->msgbuf[MsgLen] == '\r')) card->msgbuf[MsgLen--] = 0; @@ -294,7 +294,7 @@ case RECEIVE_DEBUGMSG: MsgLen = t1_get_slice(card->port, card->msgbuf); card->msgbuf[MsgLen--] = 0; - while ( MsgLen >= 0 + while ( (signed)MsgLen >= 0 && ( card->msgbuf[MsgLen] == '\n' || card->msgbuf[MsgLen] == '\r')) card->msgbuf[MsgLen--] = 0; --- linux-2.4.0-test4-pre6/fs/coda/upcall.c Tue Jul 11 22:21:16 2000 +++ linux-akpm/fs/coda/upcall.c Thu Jul 13 23:06:31 2000 @@ -738,7 +738,7 @@ if (req->uc_flags & REQ_WRITE) { out = (union outputArgs *)req->uc_data; /* here we map positive Venus errors to kernel errors */ - if ( out->oh.result < 0 ) { + if ( (signed long)out->oh.result < 0 ) { printk("Tell Peter: Venus returns negative error %ld, for oc %ld!\n", out->oh.result, out->oh.opcode); out->oh.result = EINTR; | |