Commit 6b141b34 authored by Linus Torvalds's avatar Linus Torvalds

Import 1.3.8

parent 2d52d174
......@@ -233,6 +233,13 @@ S: Myrstuguv. 83
S: S-143 32 VARBY
S: Sweden
N: Paal-Kristian Engstad
E: engstad@funcom.com
D: Wrote smbfs (to mount WfW, NT and OS/2 network drives.)
S: Oscars gt. 35
S: N-0258 OSLO
S: Norway
N: Doug Evans
E: dje@cygnus.com
D: Wrote Xenix FS (part of standard kernel since 0.99.15)
......@@ -452,6 +459,14 @@ N: Rudolf Koenig
E: rfkoenig@immd4.informatik.uni-erlangen.de
D: The Linux Support Team Erlangen
N: Markus Kuhn
E: mskuhn@cip.informatik.uni-erlangen.de
W: http://wwwcip.informatik.uni-erlangen.de/user/mskuhn
D: Unicode, time, standards
S: Schlehenweg 9
S: D-91080 Uttenreuth
S: Germany
N: Bas Laarhoven
E: bas@vimec.nl
D: Loadable modules and ftape driver
......
VERSION = 1
PATCHLEVEL = 3
SUBLEVEL = 7
SUBLEVEL = 8
ARCH = i386
......
......@@ -112,7 +112,7 @@ bool 'Seagate ST-02 and Future Domain TMC-8xx SCSI support' CONFIG_SCSI_SEAGATE
bool 'Trantor T128/T128F/T228 SCSI support' CONFIG_SCSI_T128 n
bool 'UltraStor SCSI support' CONFIG_SCSI_ULTRASTOR n
bool '7000FASST SCSI support' CONFIG_SCSI_7000FASST n
#bool 'EATA ISA/EISA (DPT PM2011/021/012/022/122/322) support' CONFIG_SCSI_EATA n
bool 'EATA ISA/EISA (DPT PM2011/021/012/022/122/322) support' CONFIG_SCSI_EATA n
#bool 'SCSI debugging host adapter' CONFIG_SCSI_DEBUG n
fi
......
......@@ -180,7 +180,7 @@ unsigned int csum_partial_copy_fromuser( char *src, char *dst,
movw %%cx, (%%edi)
leal 2(%%edi), %%edi
je 6f
shll $16,%%edx
shll $16,%%ecx
5: movb %%fs:(%%esi), %%cl
movb %%cl, (%%edi)
6: addl %%ecx, %%eax
......@@ -275,7 +275,7 @@ unsigned int csum_partial_copy( char *src, char *dst,
movw %%cx, (%%edi)
leal 2(%%edi), %%edi
je 6f
shll $16,%%edx
shll $16,%%ecx
5: movb (%%esi), %%cl
movb %%cl, (%%edi)
6: addl %%ecx, %%eax
......
......@@ -1000,7 +1000,6 @@ lance_rx(struct device *dev)
}
skb->dev = dev;
skb_reserve(skb,2); /* 16 byte align */
skb_put(skb,pkt_len); /* Make room */
eth_copy_and_sum(skb_put(skb,pkt_len),
(unsigned char *)(lp->rx_ring[entry].base & 0x00ffffff),
pkt_len,0);
......
/*
* eata.c - Low-level driver for EATA/DMA SCSI host adapters.
*
* 6 Jul 1995 rev. 2.01 for linux 1.3.7
* Update required by the new /proc/scsi support.
*
* 11 Mar 1995 rev. 2.00 for linux 1.2.0
* Fixed a bug which prevented media change detection for removable
* disk drives.
......@@ -118,6 +121,7 @@
#include <linux/ioport.h>
#include <asm/io.h>
#include <asm/system.h>
#include <linux/proc_fs.h>
#include "../block/blk.h"
#include "scsi.h"
#include "hosts.h"
......
......@@ -7,16 +7,19 @@
#include <linux/scsicam.h>
#define EATA_VERSION "2.00.00"
int eata2x_detect(Scsi_Host_Template *);
int eata2x_queuecommand(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));
int eata2x_abort(Scsi_Cmnd *);
int eata2x_reset(Scsi_Cmnd *);
#define EATA_VERSION "2.01.00"
#define EATA { \
NULL, /* Ptr for modules */ \
NULL, /* usage count for modules */ \
NULL, \
"eata2x", \
PROC_SCSI_EATA2X, \
"EATA/DMA 2.0x rev. " EATA_VERSION " ", \
eata2x_detect, \
NULL, /* Release */ \
......
......@@ -53,11 +53,17 @@ static int load_elf_library(int fd);
static int elf_core_dump(long signr, struct pt_regs * regs);
extern int dump_fpu (elf_fpregset_t *);
/*
* Please do not change the default core dump format to ELF when most people
* do not have a gdb capable of interpreting ELF core files. Once a gdb has
* been released that understands ELF, *THEN* switch the core dump format.
*/
struct linux_binfmt elf_format = {
#ifndef MODULE
NULL, NULL, load_elf_binary, load_elf_library, elf_core_dump
NULL, NULL, load_elf_binary, load_elf_library, aout_core_dump
#else
NULL, &mod_use_count_, load_elf_binary, load_elf_library, elf_core_dump
NULL, &mod_use_count_, load_elf_binary, load_elf_library, aout_core_dump
#endif
};
......
......@@ -50,7 +50,6 @@ asmlinkage int sys_brk(unsigned long);
static int load_aout_binary(struct linux_binprm *, struct pt_regs * regs);
static int load_aout_library(int fd);
static int aout_core_dump(long signr, struct pt_regs * regs);
extern void dump_thread(struct pt_regs *, struct user *);
......@@ -163,7 +162,7 @@ if (file.f_op->lseek) { \
* field, which also makes sure the core-dumps won't be recursive if the
* dumping of the process results in another error..
*/
static int aout_core_dump(long signr, struct pt_regs * regs)
int aout_core_dump(long signr, struct pt_regs * regs)
{
struct inode * inode = NULL;
struct file file;
......
......@@ -759,7 +759,7 @@ int ext2_symlink (struct inode * dir, const char * name, int len,
for (l = 0; l < inode->i_sb->s_blocksize - 1 &&
symname [l]; l++)
;
if (l >= EXT2_N_BLOCKS * sizeof (unsigned long)) {
if (l >= EXT2_N_BLOCKS * sizeof (__u32)) {
ext2_debug ("l=%d, normal symlink\n", l);
......
......@@ -231,6 +231,7 @@ static int do_isofs_readdir(struct inode *inode, struct file *filp,
/* rrflag == 1 means that we have a new name (kmalloced) */
if (rrflag == 1) {
rrflag = filldir(dirent, name, len, filp->f_pos, inode_number);
dcache_add(inode, name, len, inode_number);
kfree(name); /* this was allocated in get_r_r_filename.. */
if (rrflag < 0)
break;
......@@ -243,6 +244,7 @@ static int do_isofs_readdir(struct inode *inode, struct file *filp,
len = isofs_name_translate(name, len, tmpname);
if (filldir(dirent, tmpname, len, filp->f_pos, inode_number) < 0)
break;
dcache_add(inode, tmpname, len, inode_number);
filp->f_pos += de_len;
continue;
}
......@@ -250,6 +252,7 @@ static int do_isofs_readdir(struct inode *inode, struct file *filp,
if (filldir(dirent, name, len, filp->f_pos, inode_number) < 0)
break;
dcache_add(inode, name, len, inode_number);
filp->f_pos += de_len;
continue;
}
......
#ifndef _ASM_SOCKET_H
#define _ASM_SOCKET_H
/* For setsockoptions(2) */
/*
* Note: we only bother about making the SOL_SOCKET options
* same as OSF/1, as that's all that "normal" programs are
* likely to set. We don't necessarily want to be binary
* compatible with _everything_.
*/
#define SOL_SOCKET 0xffff
#define SO_DEBUG 0x0001
#define SO_REUSEADDR 0x0004
#define SO_KEEPALIVE 0x0008
#define SO_DONTROUTE 0x0010
#define SO_BROADCAST 0x0020
#define SO_LINGER 0x0080
#define SO_OOBINLINE 0x0100
/* To add :#define SO_REUSEPORT 0x0200 */
#define SO_TYPE 0x1008
#define SO_ERROR 0x1007
#define SO_SNDBUF 0x1001
#define SO_RCVBUF 0x1002
/* linux-specific, might as well be the same as on i386 */
#define SO_NO_CHECK 11
#define SO_PRIORITY 12
#endif /* _ASM_SOCKET_H */
#ifndef _ASM_SOCKET_H
#define _ASM_SOCKET_H
/* For setsockoptions(2) */
#define SOL_SOCKET 1
#define SO_DEBUG 1
#define SO_REUSEADDR 2
#define SO_TYPE 3
#define SO_ERROR 4
#define SO_DONTROUTE 5
#define SO_BROADCAST 6
#define SO_SNDBUF 7
#define SO_RCVBUF 8
#define SO_KEEPALIVE 9
#define SO_OOBINLINE 10
#define SO_NO_CHECK 11
#define SO_PRIORITY 12
#define SO_LINGER 13
/* To add :#define SO_REUSEPORT 14 */
#endif /* _ASM_SOCKET_H */
......@@ -44,6 +44,7 @@ extern int read_exec(struct inode *inode, unsigned long offset,
char * addr, unsigned long count, int to_kmem);
extern int open_inode(struct inode * inode, int mode);
extern int aout_core_dump(long signr, struct pt_regs * regs);
extern void flush_old_exec(struct linux_binprm * bprm);
extern unsigned long setup_arg_pages(unsigned long text_size,unsigned long * page);
......
......@@ -127,6 +127,7 @@ enum scsi_directory_inos {
PROC_SCSI_NCR53C7xx,
PROC_SCSI_ULTRASTOR,
PROC_SCSI_7000FASST,
PROC_SCSI_EATA2X,
PROC_SCSI_SCSI_DEBUG,
PROC_SCSI_NOT_PRESENT,
PROC_SCSI_FILE, /* I'm asuming here that we */
......
......@@ -225,7 +225,7 @@ struct task_struct {
* your own risk!. Base=0, limit=0x1fffff (=2MB)
*/
#define INIT_TASK \
/* state etc */ { 0,15,15,0,0,0,0, \
/* state etc */ { 0,15*HZ/100,15*HZ/100,0,0,0,0, \
/* debugregs */ { 0, }, \
/* exec domain */&default_exec_domain, \
/* binfmt */ NULL, \
......
#ifndef _LINUX_SOCKET_H
#define _LINUX_SOCKET_H
#include <asm/socket.h> /* arch-dependent defines */
#include <linux/sockios.h> /* the SIOCxxx I/O controls */
......@@ -59,7 +60,6 @@ struct linger {
#define MSG_DONTROUTE 4
/* Setsockoptions(2) level. Thanks to BSD these must match IPPROTO_xxx */
#define SOL_SOCKET 1
#define SOL_IP 0
#define SOL_IPX 256
#define SOL_AX25 257
......@@ -68,22 +68,6 @@ struct linger {
#define SOL_TCP 6
#define SOL_UDP 17
/* For setsockoptions(2) */
#define SO_DEBUG 1
#define SO_REUSEADDR 2
#define SO_TYPE 3
#define SO_ERROR 4
#define SO_DONTROUTE 5
#define SO_BROADCAST 6
#define SO_SNDBUF 7
#define SO_RCVBUF 8
#define SO_KEEPALIVE 9
#define SO_OOBINLINE 10
#define SO_NO_CHECK 11
#define SO_PRIORITY 12
#define SO_LINGER 13
/* To add :#define SO_REUSEPORT 14 */
/* IP options */
#define IP_TOS 1
#define IPTOS_LOWDELAY 0x10
......
......@@ -176,6 +176,7 @@ struct symbol_table symbol_table = {
X(__wait_on_buffer),
X(dcache_lookup),
X(dcache_add),
X(aout_core_dump),
/* device registration */
X(register_chrdev),
......
......@@ -958,7 +958,7 @@ static int atalk_setsockopt(struct socket *sock, int level, int optname, char *o
}
break;
case SOL_SOCKET:
case SOL_SOCKET:
return sock_setsockopt(sk,level,optname,optval,optlen);
default:
......
......@@ -356,7 +356,8 @@ void dev_queue_xmit(struct sk_buff *skb, struct device *dev, int pri)
save_flags(flags);
cli();
if (dev_nit && !where)
if (/*dev_nit && */!where) /* Always keep order. It helps other hosts
far more than it costs us */
{
skb_queue_tail(dev->buffs + pri,skb);
skb_device_unlock(skb); /* Buffer is on the device queue and can be freed safely */
......@@ -381,6 +382,7 @@ void dev_queue_xmit(struct sk_buff *skb, struct device *dev, int pri)
if ((skb2 = skb_clone(skb, GFP_ATOMIC)) == NULL)
break;
skb2->h.raw = skb2->data + dev->hard_header_len;
skb2->mac.raw = skb2->data;
ptype->func(skb2, skb->dev, ptype);
nitcount--;
}
......
......@@ -613,6 +613,7 @@ struct sk_buff *skb_clone(struct sk_buff *skb, int priority)
n->when=skb->when;
n->dev=skb->dev;
n->h.raw=skb->h.raw+offset;
n->mac.raw=skb->mac.raw+offset;
n->ip_hdr=(struct iphdr *)(((char *)skb->ip_hdr)+offset);
n->saddr=skb->saddr;
n->daddr=skb->daddr;
......@@ -674,8 +675,11 @@ void dev_kfree_skb(struct sk_buff *skb, int mode)
struct sk_buff *dev_alloc_skb(unsigned int length)
{
struct sk_buff *skb=alloc_skb(length+16, GFP_ATOMIC);
skb_reserve(skb,16);
struct sk_buff *skb;
skb = alloc_skb(length+16, GFP_ATOMIC);
if (skb)
skb_reserve(skb,16);
return skb;
}
......
......@@ -129,7 +129,7 @@ int sock_setsockopt(struct sock *sk, int level, int optname,
if(err)
return err;
val = get_fs_long((unsigned long *)optval);
val = get_user((int *)optval);
valbool = val?1:0;
switch(optname)
......
......@@ -1280,7 +1280,7 @@ static int inet_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
{
struct sock *sk=(struct sock *)sock->data;
int err;
int tmp;
int pid;
switch(cmd)
{
......@@ -1289,11 +1289,11 @@ static int inet_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
err=verify_area(VERIFY_READ,(int *)arg,sizeof(long));
if(err)
return err;
tmp = get_fs_long((int *) arg);
pid = get_user((int *) arg);
/* see inet_fcntl */
if (current->pid != tmp && current->pgrp != -tmp && !suser())
if (current->pid != pid && current->pgrp != -pid && !suser())
return -EPERM;
sk->proc = tmp;
sk->proc = pid;
return(0);
case FIOGETOWN:
case SIOCGPGRP:
......
......@@ -1660,7 +1660,7 @@ static void ip_loopback(struct device *old_dev, struct sk_buff *skb)
extern struct device loopback_dev;
struct device *dev=&loopback_dev;
int len=skb->len-old_dev->hard_header_len;
struct sk_buff *newskb=dev_alloc_skb(len+dev->hard_header_len);
struct sk_buff *newskb=dev_alloc_skb(len+dev->hard_header_len+15);
if(newskb==NULL)
return;
......
......@@ -2020,7 +2020,7 @@ static int tcp_read(struct sock *sk, unsigned char *to,
while (len > 0)
{
struct sk_buff * skb;
unsigned long offset;
u32 offset;
/*
* Are we at urgent data? Stop if we have read anything.
......@@ -2125,7 +2125,7 @@ static int tcp_read(struct sock *sk, unsigned char *to,
if (sk->urg_data)
{
unsigned long urg_offset = sk->urg_seq - *seq;
u32 urg_offset = sk->urg_seq - *seq;
if (urg_offset < used)
{
if (!urg_offset)
......@@ -4085,7 +4085,7 @@ extern __inline__ int tcp_data(struct sk_buff *skb, struct sock *sk,
static void tcp_check_urg(struct sock * sk, struct tcphdr * th)
{
unsigned long ptr = ntohs(th->urg_ptr);
u32 ptr = ntohs(th->urg_ptr);
if (ptr)
ptr--;
......@@ -4118,7 +4118,7 @@ static void tcp_check_urg(struct sock * sk, struct tcphdr * th)
extern __inline__ int tcp_urg(struct sock *sk, struct tcphdr *th,
unsigned long saddr, unsigned long len)
{
unsigned long ptr;
u32 ptr;
/*
* Check if we get a new urgent pointer - normally not
......
......@@ -1298,7 +1298,7 @@ static int ipx_setsockopt(struct socket *sock, int level, int optname, char *opt
}
break;
case SOL_SOCKET:
case SOL_SOCKET:
return sock_setsockopt(sk,level,optname,optval,optlen);
default:
......
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