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)
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
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
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
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
}
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.
#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"
#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 */ \
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
};
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 *);
* 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;
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);
/* 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;
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;
}
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;
}
--- /dev/null
+#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 */
--- /dev/null
+#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 */
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);
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 */
* 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 */
#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
#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
X(__wait_on_buffer),
X(dcache_lookup),
X(dcache_add),
+ X(aout_core_dump),
/* device registration */
X(register_chrdev),
}
break;
- case SOL_SOCKET:
+ case SOL_SOCKET:
return sock_setsockopt(sk,level,optname,optval,optlen);
default:
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 */
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--;
}
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;
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;
}
if(err)
return err;
- val = get_fs_long((unsigned long *)optval);
+ val = get_user((int *)optval);
valbool = val?1:0;
switch(optname)
{
struct sock *sk=(struct sock *)sock->data;
int err;
- int tmp;
+ int pid;
switch(cmd)
{
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:
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;
while (len > 0)
{
struct sk_buff * skb;
- unsigned long offset;
+ u32 offset;
/*
* Are we at urgent data? Stop if we have read anything.
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)
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--;
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
}
break;
- case SOL_SOCKET:
+ case SOL_SOCKET:
return sock_setsockopt(sk,level,optname,optval,optlen);
default: