Commit c3b8d39c authored by Linus Torvalds's avatar Linus Torvalds

Import 1.1.59

parent 591f1652
VERSION = 1
PATCHLEVEL = 1
SUBLEVEL = 58
SUBLEVEL = 59
ARCH = i386
......
......@@ -234,6 +234,7 @@ unsigned long bus_mouse_init(unsigned long kmem_start)
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;
}
......@@ -1463,12 +1463,13 @@ void do_SAK( struct tty_struct *tty)
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)
......
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
......
......@@ -312,6 +312,7 @@ asmlinkage int sys_fchown(unsigned int fd, uid_t user, gid_t group)
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 @@ asmlinkage int sys_fchown(unsigned int fd, uid_t user, gid_t group)
* 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;
......
......@@ -87,6 +87,8 @@ struct symbol_table symbol_table = { 0, 0, 0, /* for stacked module support */
X(namei),
X(lnamei),
X(open_namei),
X(inode_setattr),
X(inode_change_ok),
/* device registration */
X(register_chrdev),
......
......@@ -637,6 +637,33 @@ unsigned long __get_free_pages(int priority, unsigned long order)
return 0;
}
/*
* 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
......
......@@ -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 @@ static int tcp_readable(struct sock *sk)
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 <pall@rz.uni-karlsruhe.de>
*/
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 @@ static int tcp_select(struct sock *sk, int sel_type, select_table *wait)
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 void cleanup_rbuf(struct sock *sk)
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 <pall@rz.uni-karlsruhe.de> */
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 @@ static int tcp_read_urg(struct sock * sk, int nonblock,
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 <pall@rz.uni-karlsruhe.de>
*/
return -EAGAIN;
#ifdef NOTDEF
/* remove the loop, if this dead code gets removed! */
if (nonblock)
return -EAGAIN;
......@@ -1469,6 +1474,7 @@ static int tcp_read_urg(struct sock * sk, int nonblock,
schedule();
remove_wait_queue(sk->sleep, &wait);
current->state = TASK_RUNNING;
#endif
}
return 0;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment