diff -u --recursive --new-file v1.1.58/linux/Makefile linux/Makefile --- v1.1.58/linux/Makefile Fri Oct 28 12:24:00 1994 +++ linux/Makefile Fri Oct 28 12:07:33 1994 @@ -1,6 +1,6 @@ VERSION = 1 PATCHLEVEL = 1 -SUBLEVEL = 58 +SUBLEVEL = 59 ARCH = i386 diff -u --recursive --new-file v1.1.58/linux/drivers/char/busmouse.c linux/drivers/char/busmouse.c --- v1.1.58/linux/drivers/char/busmouse.c Thu Aug 11 20:43:03 1994 +++ linux/drivers/char/busmouse.c Fri Oct 28 12:54:44 1994 @@ -234,6 +234,7 @@ mouse.dx = 0; mouse.dy = 0; mouse.wait = NULL; - printk("Logitech Bus mouse detected and installed.\n"); + printk("Logitech Bus mouse detected and installed with IRQ %d.\n", + mouse_irq); return kmem_start; } diff -u --recursive --new-file v1.1.58/linux/drivers/char/tty_io.c linux/drivers/char/tty_io.c --- v1.1.58/linux/drivers/char/tty_io.c Fri Oct 28 12:24:01 1994 +++ linux/drivers/char/tty_io.c Thu Oct 27 17:59:46 1994 @@ -1463,12 +1463,13 @@ tty_hangup(tty); #else struct task_struct **p; - int session = tty->session; + int session; int i; struct file *filp; if (!tty) return; + session = tty->session; if (tty->ldisc.flush_buffer) tty->ldisc.flush_buffer(tty); if (tty->driver.flush_buffer) diff -u --recursive --new-file v1.1.58/linux/drivers/scsi/ChangeLog linux/drivers/scsi/ChangeLog --- v1.1.58/linux/drivers/scsi/ChangeLog Thu Aug 11 20:43:19 1994 +++ linux/drivers/scsi/ChangeLog Thu Oct 27 17:49:29 1994 @@ -1,3 +1,146 @@ +Tue Oct 11 08:47:39 1994 Eric Youngdale (eric@andante) + + * Linux 1.1.54 released. + + * Add third PCI chip id. [Drew] + + * buslogic.c: Set BUSLOGIC_CMDLUN back to 1 [Eric]. + +Sun Oct 9 20:23:14 1994 Eric Youngdale (eric@andante) + + * Linux 1.1.53 released. + + * scsi.c: Do not allocate dma bounce buffers if we have exactly + 16Mb. + +Fri Sep 9 05:35:30 1994 Eric Youngdale (eric@andante) + + * Linux 1.1.51 released. + + * aha152x.c: Add support for disabling the parity check. Update + to version 1.4. [Juergen]. + + * seagate.c: Tweak debugging message. + +Wed Aug 31 10:15:55 1994 Eric Youngdale (eric@andante) + + * Linux 1.1.50 released. + + * aha152x.c: Add eb800 for Vtech Platinum SMP boards. [Juergen]. + + * scsi.c: Add Quantum PD1225S to blacklist. + +Fri Aug 26 09:38:45 1994 Eric Youngdale (eric@andante) + + * Linux 1.1.49 released. + + * sd.c: Fix bug when we were deleting the wrong entry if we + get an unsupported sector size device. + + * sr.c: Another spelling patch. + +Thu Aug 25 09:15:27 1994 Eric Youngdale (eric@andante) + + * Linux 1.1.48 released. + + * Throughout: Use new semantics for request_dma, as appropriate. + + * sr.c: Print correct device number. + +Sun Aug 21 17:49:23 1994 Eric Youngdale (eric@andante) + + * Linux 1.1.47 released. + + * NCR5380.c: Add support for LIMIT_TRANSFERSIZE. + + * constants.h: Add prototype for print_Scsi_Cmnd. + + * pas16.c: Some more minor tweaks. Test for Mediavision board. + Allow for disks > 1Gb. [Drew??] + + * sr.c: Set SCpnt->transfersize. + +Tue Aug 16 17:29:35 1994 Eric Youngdale (eric@andante) + + * Linux 1.1.46 released. + + * Throughout: More spelling fixups. + + * buslogic.c: Add a few more fixups from Dave. Disk translation + mainly. + + * pas16.c: Add a few patches (Drew?). + + +Thu Aug 11 20:45:15 1994 Eric Youngdale (eric@andante) + + * Linux 1.1.44 released. + + * hosts.c: Add type casts for scsi_init_malloc. + + * scsicam.c: Add type cast. + +Wed Aug 10 19:23:01 1994 Eric Youngdale (eric@andante) + + * Linux 1.1.43 released. + + * Throughout: Spelling cleanups. [??] + + * aha152x.c, NCR53*.c, fdomain.c, g_NCR5380.c, pas16.c, seagate.c, + t128.c: Use request_irq, not irqaction. [??] + + * aha1542.c: Move test for shost before we start to use shost. + + * aha1542.c, aha1740.c, ultrastor.c, wd7000.c: Use new + calling sequence for request_irq. + + * buslogic.c: Update from Dave Gentzel. + +Tue Aug 9 09:32:59 1994 Eric Youngdale (eric@andante) + + * Linux 1.1.42 released. + + * NCR5380.c: Change NCR5380_print_status to static. + + * seagate.c: A few more bugfixes. Only Drew knows what they are + for. + + * ultrastor.c: Tweak some __asm__ directives so that it works + with newer compilers. [??] + +Sat Aug 6 21:29:36 1994 Eric Youngdale (eric@andante) + + * Linux 1.1.40 released. + + * NCR5380.c: Return SCSI_RESET_WAKEUP from reset function. + + * aha1542.c: Reset mailbox status after a bus device reset. + + * constants.c: Fix typo (;;). + + * g_NCR5380.c: + * pas16.c: Correct usage of NCR5380_init. + + * scsi.c: Remove redunant (and unused variables). + + * sd.c: Use memset to clear all of rscsi_disks before we use it. + + * sg.c: Ditto, except for scsi_generics. + + * sr.c: Ditto, except for scsi_CDs. + + * st.c: Initialize STp->device. + + * seagate.c: Fix bug. [Drew] + +Thu Aug 4 08:47:27 1994 Eric Youngdale (eric@andante) + + * Linux 1.1.39 released. + + * Makefile: Fix typo in NCR53C7xx. + + * st.c: Print correct number for device. + Sat Jul 9 15:01:03 1994 Eric Youngdale (eric@esp22) More changes to eventually support loadable modules. Mainly diff -u --recursive --new-file v1.1.58/linux/fs/open.c linux/fs/open.c --- v1.1.58/linux/fs/open.c Tue Oct 25 18:27:21 1994 +++ linux/fs/open.c Thu Oct 27 17:15:24 1994 @@ -312,6 +312,7 @@ user = inode->i_uid; if (group == (gid_t) -1) group = inode->i_gid; + newattrs.ia_mode = inode->i_mode; newattrs.ia_uid = user; newattrs.ia_gid = group; newattrs.ia_ctime = CURRENT_TIME; @@ -320,14 +321,14 @@ * If the owner has been changed, remove the setuid bit */ if (user != inode->i_uid && inode->i_mode & S_ISUID) { - newattrs.ia_mode = inode->i_mode & ~S_ISUID; + newattrs.ia_mode &= ~S_ISUID; newattrs.ia_valid |= ATTR_MODE; } /* * If the group has been changed, remove the setgid bit */ if (group != inode->i_gid && inode->i_mode & S_ISGID) { - newattrs.ia_mode = inode->i_mode & ~S_ISGID; + newattrs.ia_mode &= ~S_ISGID; newattrs.ia_valid |= ATTR_MODE; } inode->i_dirt = 1; diff -u --recursive --new-file v1.1.58/linux/kernel/ksyms.c linux/kernel/ksyms.c --- v1.1.58/linux/kernel/ksyms.c Sun Oct 23 13:30:13 1994 +++ linux/kernel/ksyms.c Fri Oct 28 11:25:31 1994 @@ -87,6 +87,8 @@ X(namei), X(lnamei), X(open_namei), + X(inode_setattr), + X(inode_change_ok), /* device registration */ X(register_chrdev), diff -u --recursive --new-file v1.1.58/linux/mm/swap.c linux/mm/swap.c --- v1.1.58/linux/mm/swap.c Wed Aug 31 10:14:12 1994 +++ linux/mm/swap.c Fri Oct 28 12:38:45 1994 @@ -638,6 +638,33 @@ } /* + * Yes, I know this is ugly. Don't tell me. + */ +unsigned long __get_dma_pages(int priority, unsigned long order) +{ + unsigned long list = 0; + unsigned long result; + unsigned long limit = 16*1024*1024; + + /* if (EISA_bus) limit = ~0UL; */ + if (priority != GFP_ATOMIC) + priority = GFP_BUFFER; + for (;;) { + result = __get_free_pages(priority, order); + if (result < limit) /* covers failure as well */ + break; + *(unsigned long *) result = list; + list = result; + } + while (list) { + unsigned long tmp = list; + list = *(unsigned long *) list; + free_pages(tmp, order); + } + return result; +} + +/* * Show free area list (used inside shift_scroll-lock stuff) * We also calculate the percentage fragmentation. We do this by counting the * memory on each free list with the exception of the first item on the list. diff -u --recursive --new-file v1.1.58/linux/net/inet/tcp.c linux/net/inet/tcp.c --- v1.1.58/linux/net/inet/tcp.c Fri Oct 28 12:24:04 1994 +++ linux/net/inet/tcp.c Fri Oct 28 12:54:32 1994 @@ -86,6 +86,9 @@ * Alan Cox : Reset on closedown bug. * Peter De Schrijver : ENOTCONN check missing in tcp_sendto(). * Michael Pall : Handle select() after URG properly in all cases. + * Michael Pall : Undo the last fix in tcp_read_urg() (multi URG PUSH broke rlogin). + * Michael Pall : Fix the multi URG PUSH problem in tcp_readable(), select() after URG works now. + * Michael Pall : recv(...,MSG_OOB) never blocks in the BSD api. * * * To Fix: @@ -407,14 +410,29 @@ amount--; counted += sum; } + /* + * Don't count urg data ... but do it in the right place! + * Consider: "old_data (ptr is here) URG PUSH data" + * The old code would stop at the first push because + * it counted the urg (amount==1) and then does amount-- + * *after* the loop. This means tcp_readable() always + * returned zero if any URG PUSH was in the queue, even + * though there was normal data available. If we subtract + * the urg data right here, we even get it to work for more + * than one URG PUSH skb without normal data. + * This means that select() finally works now with urg data + * in the queue. Note that rlogin was never affected + * because it doesn't use select(); it uses two processes + * and a blocking read(). And the queue scan in tcp_read() + * was correct. Mike + */ + if (skb->h.th->urg) + amount--; /* don't count urg data */ if (amount && skb->h.th->psh) break; skb = skb->next; } while(skb != (struct sk_buff *)&sk->receive_queue); - if (amount && !sk->urginline && sk->urg_data && - (sk->urg_seq - sk->copied_seq) <= (counted - sk->copied_seq)) - amount--; /* don't count urg data */ restore_flags(flags); if(sk->debug) printk("got %lu bytes.\n",amount); @@ -434,42 +452,27 @@ switch(sel_type) { case SEL_IN: - if(sk->debug) - printk("select in"); select_wait(sk->sleep, wait); - if(sk->debug) - printk("-select out"); if (skb_peek(&sk->receive_queue) != NULL) { if ((sk->state == TCP_LISTEN && tcp_find_established(sk)) || tcp_readable(sk)) { release_sock(sk); - if(sk->debug) - printk("-select ok data\n"); return(1); } } if (sk->err != 0) /* Receiver error */ { release_sock(sk); - if(sk->debug) - printk("-select ok error"); return(1); } if (sk->shutdown & RCV_SHUTDOWN) { release_sock(sk); - if(sk->debug) - printk("-select ok down\n"); return(1); } - else - { - release_sock(sk); - if(sk->debug) - printk("-select fail\n"); - return(0); - } + release_sock(sk); + return(0); case SEL_OUT: select_wait(sk->sleep, wait); if (sk->shutdown & SEND_SHUTDOWN) @@ -1405,28 +1408,20 @@ static int tcp_read_urg(struct sock * sk, int nonblock, unsigned char *to, int len, unsigned flags) { +#ifdef NOTDEF struct wait_queue wait = { current, NULL }; +#endif while (len > 0) { if (sk->urginline || !sk->urg_data || sk->urg_data == URG_READ) return -EINVAL; - sk->inuse=1; + sk->inuse = 1; if (sk->urg_data & URG_VALID) { char c = sk->urg_data; if (!(flags & MSG_PEEK)) - { - /* Skip over urgent data, so tcp_readable() returns - something again. This in turn makes tcp_select() - happy. Mike */ - if (sk->copied_seq + 1 == sk->urg_seq) - { - wake_up_interruptible(sk->sleep); - sk->copied_seq++; - } sk->urg_data = URG_READ; - } put_fs_byte(c, to); release_sock(sk); return 1; @@ -1456,6 +1451,16 @@ return 0; } + /* + * Fixed the recv(..., MSG_OOB) behaviour. BSD docs and + * the available implementations agree in this case: + * this call should never block, independent of the + * blocking state of the socket. + * Mike + */ + return -EAGAIN; +#ifdef NOTDEF + /* remove the loop, if this dead code gets removed! */ if (nonblock) return -EAGAIN; @@ -1469,6 +1474,7 @@ schedule(); remove_wait_queue(sk->sleep, &wait); current->state = TASK_RUNNING; +#endif } return 0; }