Commit 36800b1c authored by Linus Torvalds's avatar Linus Torvalds

Import 2.1.123pre2

parent 20fca9a1
......@@ -2457,8 +2457,9 @@ CONFIG_UNIX
be inserted in and removed from the running kernel whenever you
want). The module will be called unix.o. If you want to compile it
as a module, say M here and read Documentation/modules.txt. If you
try building this as a module and you are running kerneld, be sure
to add 'alias net-pf-1 unix' to your /etc/conf.module file.
try building this as a module and you have said Y to "Kernel module
loader support" above, be sure to add 'alias net-pf-1 unix' to your
/etc/conf.modules file.
If unsure, say Y.
......@@ -7033,8 +7034,8 @@ CONFIG_SERIAL
Documentation/modules.txt. The module will be called serial.o.
[WARNING: Do not compile this driver as a module if you are using
non-standard serial ports, since the configuration information will
be lost when kerneld automatically unloads the driver. This
limitation may be lifted in the future.]
be lost if you unload the driver. This limitation may be lifted in
the future.]
BTW1: If you have a mouseman serial mouse which is not recognized by
the X window system, try running gpm first.
......
VERSION = 2
PATCHLEVEL = 1
SUBLEVEL = 122
SUBLEVEL = 123
ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
......
......@@ -40,6 +40,7 @@ CONFIG_BINFMT_AOUT=y
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_MISC=y
# CONFIG_PARPORT is not set
# CONFIG_APM is not set
#
# Plug and Play support
......@@ -238,7 +239,6 @@ CONFIG_82C710_MOUSE=y
# CONFIG_PC110_PAD is not set
# CONFIG_UMISC is not set
# CONFIG_QIC02_TAPE is not set
# CONFIG_APM is not set
# CONFIG_WATCHDOG is not set
# CONFIG_RTC is not set
# CONFIG_VIDEO_DEV is not set
......@@ -277,6 +277,9 @@ CONFIG_LOCKD=y
# CONFIG_ROMFS_FS is not set
CONFIG_AUTOFS_FS=y
# CONFIG_UFS_FS is not set
# CONFIG_BSD_DISKLABEL is not set
# CONFIG_SMD_DISKLABEL is not set
# CONFIG_SOLARIS_X86_PARTITION is not set
CONFIG_DEVPTS_FS=y
# CONFIG_MAC_PARTITION is not set
# CONFIG_NLS is not set
......
......@@ -6791,6 +6791,7 @@ aic7xxx_alloc(Scsi_Host_Template *sht, struct aic7xxx_host *temp)
p->type = temp->type;
p->unpause = temp->unpause;
p->pause = temp->pause;
p->pdev = temp->pdev;
p->pci_bus = temp->pci_bus;
p->pci_device_fn = temp->pci_device_fn;
p->bios_address = temp->bios_address;
......
......@@ -1027,6 +1027,7 @@ static int ppa_engine(ppa_struct * tmp, Scsi_Cmnd * cmd)
retv--;
if (retv)
{
if ((jiffies - tmp->jstart) > (1 * HZ)) {
printk("ppa: Parallel port cable is unplugged!!\n");
ppa_fail(host_no, DID_BUS_BUSY);
......@@ -1035,6 +1036,7 @@ static int ppa_engine(ppa_struct * tmp, Scsi_Cmnd * cmd)
ppa_disconnect(host_no);
return 1; /* Try again in a jiffy */
}
}
cmd->SCp.phase++;
}
......
......@@ -67,11 +67,9 @@ if [ "$CONFIG_AFFS_FS" != "n" ]; then
define_bool CONFIG_AMIGA_PARTITION y
fi
tristate 'UFS filesystem support' CONFIG_UFS_FS
if [ "$CONFIG_UFS_FS" != "n" ]; then
bool 'BSD disklabel (FreeBSD partition tables) support' CONFIG_BSD_DISKLABEL
bool 'SMD disklabel (Sun partition tables) support' CONFIG_SMD_DISKLABEL
bool 'Solaris (x86) partition table support' CONFIG_SOLARIS_X86_PARTITION
fi
bool 'BSD disklabel (BSD partition tables) support' CONFIG_BSD_DISKLABEL
bool 'SMD disklabel (Sun partition tables) support' CONFIG_SMD_DISKLABEL
bool 'Solaris (x86) partition table support' CONFIG_SOLARIS_X86_PARTITION
if [ "$CONFIG_UNIX98_PTYS" = "y" ]; then
tristate '/dev/pts filesystem for Unix98 PTYs' CONFIG_DEVPTS_FS
fi
......
......@@ -15,7 +15,7 @@
* so that a bad root inode can at least be unmounted. To do this
* we must dput() the base and return the dentry with a dget().
*/
static struct dentry * bad_follow_link(struct dentry *dent, struct dentry *base)
static struct dentry * bad_follow_link(struct dentry *dent, struct dentry *base, unsigned int follow)
{
dput(base);
return dget(dent);
......
......@@ -88,7 +88,7 @@ static int minix_hash(struct dentry *dentry, struct qstr *qstr)
{
unsigned long hash;
int i;
const char *name;
const unsigned char *name;
i = dentry->d_inode->i_sb->u.minix_sb.s_namelen;
if (i >= qstr->len)
......
......@@ -361,10 +361,6 @@ struct dentry * lookup_dentry(const char * name, struct dentry * base, unsigned
unsigned int follow;
unsigned int c;
dentry = ERR_PTR(-ENOENT);
if (!inode)
break;
err = permission(inode, MAY_EXEC);
dentry = ERR_PTR(err);
if (err)
......@@ -429,16 +425,17 @@ struct dentry * lookup_dentry(const char * name, struct dentry * base, unsigned
if (IS_ERR(base))
goto return_base;
dentry = ERR_PTR(-ENOTDIR);
dentry = ERR_PTR(-ENOENT);
inode = base->d_inode;
if (follow & FOLLOW_DIRECTORY) {
if (!inode || !inode->i_op || !inode->i_op->lookup)
if (!inode)
break;
dentry = ERR_PTR(-ENOTDIR);
if (!inode->i_op || !inode->i_op->lookup)
break;
if (follow & FOLLOW_CONTINUE)
continue;
}
if (follow & FOLLOW_CONTINUE)
continue;
return_base:
return base;
}
......
......@@ -262,6 +262,7 @@ extern int csum_partial_copy_fromiovecend(unsigned char *kdata,
extern int verify_iovec(struct msghdr *m, struct iovec *iov, char *address, int mode);
extern int memcpy_toiovec(struct iovec *v, unsigned char *kdata, int len);
extern void memcpy_tokerneliovec(struct iovec *iov, unsigned char *kdata, int len);
extern int move_addr_to_user(void *kaddr, int klen, void *uaddr, int *ulen);
extern int move_addr_to_kernel(void *uaddr, int ulen, void *kaddr);
extern int put_cmsg(struct msghdr*, int level, int type, int len, void *data);
......
......@@ -32,6 +32,7 @@
#include <linux/major.h>
#include <linux/blk.h>
#include <linux/init.h>
#include <linux/smp_lock.h>
#include <asm/system.h>
#include <asm/io.h>
......@@ -1115,15 +1116,47 @@ asmlinkage void __init start_kernel(void)
check_bugs();
printk("POSIX conformance testing by UNIFIX\n");
/*
* We count on the initial thread going ok
* Like idlers init is an unlocked kernel thread, which will
* make syscalls (and thus be locked).
*/
smp_init();
kernel_thread(init, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
cpu_idle(NULL);
}
/*
* Ok, the machine is now initialized. None of the devices
* have been touched yet, but the CPU subsystem is up and
* running, and memory management works.
*
* Now we can finally start doing some real work..
*/
#ifdef CONFIG_BLK_DEV_INITRD
static int do_linuxrc(void * shell)
{
static char *argv[] = { "linuxrc", NULL, };
close(0);close(1);close(2);
setsid();
(void) open("/dev/console",O_RDWR,0);
(void) dup(0);
(void) dup(0);
return execve(shell, argv, envp_init);
}
static void __init no_initrd(char *s,int *ints)
{
mount_initrd = 0;
}
#endif
/*
* Ok, the machine is now initialized. None of the devices
* have been touched yet, but the CPU subsystem is up and
* running, and memory and process management works.
*
* Now we can finally start doing some real work..
*/
static void __init do_basic_setup(void)
{
#ifdef CONFIG_BLK_DEV_INITRD
int real_root_mountflags;
#endif
#if defined(CONFIG_MTRR) /* Do this after SMP initialization */
/*
......@@ -1161,49 +1194,6 @@ asmlinkage void __init start_kernel(void)
ecard_init();
#endif
/*
* We count on the initial thread going ok
* Like idlers init is an unlocked kernel thread, which will
* make syscalls (and thus be locked).
*/
kernel_thread(init, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
/*
* task[0] is meant to be used as an "idle" task: it may not sleep, but
* it might do some general things like count free pages or it could be
* used to implement a reasonable LRU algorithm for the paging routines:
* anything that can be useful, but shouldn't take time from the real
* processes.
*
* Right now task[0] just does an infinite idle loop.
*/
cpu_idle(NULL);
}
#ifdef CONFIG_BLK_DEV_INITRD
static int do_linuxrc(void * shell)
{
static char *argv[] = { "linuxrc", NULL, };
close(0);close(1);close(2);
setsid();
(void) open("/dev/console",O_RDWR,0);
(void) dup(0);
(void) dup(0);
return execve(shell, argv, envp_init);
}
static void __init no_initrd(char *s,int *ints)
{
mount_initrd = 0;
}
#endif
static void __init do_basic_setup(void)
{
#ifdef CONFIG_BLK_DEV_INITRD
int real_root_mountflags;
#endif
/* Networking initialization needs a process context */
sock_init();
......@@ -1222,6 +1212,7 @@ static void __init do_basic_setup(void)
#endif
#ifdef CONFIG_BLK_DEV_INITRD
real_root_dev = ROOT_DEV;
real_root_mountflags = root_mountflags;
if (initrd_start && mount_initrd) root_mountflags &= ~MS_RDONLY;
......@@ -1278,6 +1269,7 @@ static void __init do_basic_setup(void)
static int init(void * unused)
{
lock_kernel();
do_basic_setup();
/*
......@@ -1286,6 +1278,7 @@ static int init(void * unused)
* initmem segments and start the user-mode stuff..
*/
free_initmem();
unlock_kernel();
if (open("/dev/console", O_RDWR, 0) < 0)
printk("Warning: unable to open an initial console.\n");
......
......@@ -94,6 +94,30 @@ int memcpy_toiovec(struct iovec *iov, unsigned char *kdata, int len)
return err;
}
/*
* In kernel copy to iovec. Returns -EFAULT on error.
*
* Note: this modifies the original iovec.
*/
void memcpy_tokerneliovec(struct iovec *iov, unsigned char *kdata, int len)
{
while(len>0)
{
if(iov->iov_len)
{
int copy = min(iov->iov_len, len);
memcpy(iov->iov_base, kdata, copy);
kdata+=copy;
len-=copy;
iov->iov_len-=copy;
iov->iov_base+=copy;
}
iov++;
}
}
/*
* Copy iovec to kernel. Returns -EFAULT on error.
*
......
......@@ -93,6 +93,7 @@ EXPORT_SYMBOL(sock_unregister);
/* Socket layer support routines */
EXPORT_SYMBOL(memcpy_fromiovec);
EXPORT_SYMBOL(memcpy_tokerneliovec);
EXPORT_SYMBOL(sock_create);
EXPORT_SYMBOL(sock_alloc);
EXPORT_SYMBOL(sock_release);
......
......@@ -573,7 +573,6 @@ udp_data_ready(struct sock *sk, int len)
struct rpc_rqst *rovr;
struct sk_buff *skb;
struct iovec iov[MAX_IOVEC];
mm_segment_t oldfs;
int err, repsize, copied;
dprintk("RPC: udp_data_ready...\n");
......@@ -603,9 +602,8 @@ udp_data_ready(struct sock *sk, int len)
/* Okay, we have it. Copy datagram... */
memcpy(iov, rovr->rq_rvec, rovr->rq_rnr * sizeof(iov[0]));
oldfs = get_fs(); set_fs(get_ds());
skb_copy_datagram_iovec(skb, 8, iov, copied);
set_fs(oldfs);
/* This needs to stay tied with the usermode skb_copy_dagram... */
memcpy_tokerneliovec(iov, skb->data+8, copied);
xprt_complete_rqst(xprt, rovr, copied);
......
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