Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
350827b4
Commit
350827b4
authored
Nov 23, 2007
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Import 0.99.15e
parent
17e969fb
Changes
24
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
137 additions
and
91 deletions
+137
-91
Makefile
Makefile
+1
-1
drivers/FPU-emu/control_w.h
drivers/FPU-emu/control_w.h
+4
-3
drivers/FPU-emu/errors.c
drivers/FPU-emu/errors.c
+1
-0
drivers/FPU-emu/fpu_emu.h
drivers/FPU-emu/fpu_emu.h
+6
-0
drivers/FPU-emu/fpu_entry.c
drivers/FPU-emu/fpu_entry.c
+8
-8
drivers/FPU-emu/fpu_proto.h
drivers/FPU-emu/fpu_proto.h
+1
-1
drivers/FPU-emu/fpu_system.h
drivers/FPU-emu/fpu_system.h
+0
-4
drivers/FPU-emu/get_address.c
drivers/FPU-emu/get_address.c
+22
-24
drivers/FPU-emu/reg_ld_str.c
drivers/FPU-emu/reg_ld_str.c
+8
-0
drivers/FPU-emu/reg_round.S
drivers/FPU-emu/reg_round.S
+18
-1
drivers/char/serial.c
drivers/char/serial.c
+12
-4
drivers/char/tpqic02.c
drivers/char/tpqic02.c
+5
-5
drivers/net/slip.c
drivers/net/slip.c
+16
-2
drivers/scsi/aha1542.c
drivers/scsi/aha1542.c
+1
-1
drivers/scsi/constants.c
drivers/scsi/constants.c
+1
-1
fs/buffer.c
fs/buffer.c
+5
-7
fs/exec.c
fs/exec.c
+4
-0
fs/proc/array.c
fs/proc/array.c
+2
-2
include/linux/fs.h
include/linux/fs.h
+2
-1
include/linux/math_emu.h
include/linux/math_emu.h
+9
-24
include/linux/mm.h
include/linux/mm.h
+1
-1
kernel/ksyms.S
kernel/ksyms.S
+2
-0
kernel/signal.c
kernel/signal.c
+3
-1
net/inet/tcp.c
net/inet/tcp.c
+5
-0
No files found.
Makefile
View file @
350827b4
VERSION
=
0.99
VERSION
=
0.99
PATCHLEVEL
=
15
PATCHLEVEL
=
15
ALPHA
=
d
ALPHA
=
e
all
:
Version zImage
all
:
Version zImage
...
...
drivers/FPU-emu/control_w.h
View file @
350827b4
...
@@ -35,9 +35,10 @@
...
@@ -35,9 +35,10 @@
/* p 15-5: Precision control bits affect only the following:
/* p 15-5: Precision control bits affect only the following:
ADD, SUB(R), MUL, DIV(R), and SQRT */
ADD, SUB(R), MUL, DIV(R), and SQRT */
#define PR_24_BITS _Const_(0x000)
#define PR_24_BITS _Const_(0x000)
#define PR_53_BITS _Const_(0x200)
#define PR_53_BITS _Const_(0x200)
#define PR_64_BITS _Const_(0x300)
#define PR_64_BITS _Const_(0x300)
#define PR_RESERVED_BITS _Const_(0x100)
/* FULL_PRECISION simulates all exceptions masked */
/* FULL_PRECISION simulates all exceptions masked */
#define FULL_PRECISION (PR_64_BITS | RC_RND | 0x3f)
#define FULL_PRECISION (PR_64_BITS | RC_RND | 0x3f)
...
...
drivers/FPU-emu/errors.c
View file @
350827b4
...
@@ -261,6 +261,7 @@ static struct {
...
@@ -261,6 +261,7 @@ static struct {
0x233 in reg_round.S
0x233 in reg_round.S
0x234 in reg_round.S
0x234 in reg_round.S
0x235 in reg_round.S
0x235 in reg_round.S
0x236 in reg_round.S
*/
*/
void
exception
(
int
n
)
void
exception
(
int
n
)
...
...
drivers/FPU-emu/fpu_emu.h
View file @
350827b4
...
@@ -81,6 +81,12 @@ extern char emulating;
...
@@ -81,6 +81,12 @@ extern char emulating;
#define PREFIX_REPE 0xf3
#define PREFIX_REPE 0xf3
#define PREFIX_REPNE 0xf2
#define PREFIX_REPNE 0xf2
#define PREFIX_LOCK 0xf0
#define PREFIX_LOCK 0xf0
#define PREFIX_CS_ 1
#define PREFIX_DS_ 2
#define PREFIX_ES_ 3
#define PREFIX_FS_ 4
#define PREFIX_GS_ 5
#define PREFIX_SS_ 6
/* These are to defeat the default action, giving the instruction
/* These are to defeat the default action, giving the instruction
no net effect: */
no net effect: */
...
...
drivers/FPU-emu/fpu_entry.c
View file @
350827b4
...
@@ -560,7 +560,7 @@ static int valid_prefix(unsigned char *Byte, unsigned char **fpu_eip,
...
@@ -560,7 +560,7 @@ static int valid_prefix(unsigned char *Byte, unsigned char **fpu_eip,
unsigned
char
byte
;
unsigned
char
byte
;
unsigned
char
*
ip
=
*
fpu_eip
;
unsigned
char
*
ip
=
*
fpu_eip
;
*
override
=
(
overrides
)
{
0
,
0
,
PREFIX_DS
};
/* defaults */
*
override
=
(
overrides
)
{
0
,
0
,
PREFIX_DS
_
};
/* defaults */
RE_ENTRANT_CHECK_OFF
;
RE_ENTRANT_CHECK_OFF
;
FPU_code_verify_area
(
1
);
FPU_code_verify_area
(
1
);
...
@@ -580,23 +580,23 @@ static int valid_prefix(unsigned char *Byte, unsigned char **fpu_eip,
...
@@ -580,23 +580,23 @@ static int valid_prefix(unsigned char *Byte, unsigned char **fpu_eip,
goto
do_next_byte
;
goto
do_next_byte
;
case
PREFIX_CS
:
case
PREFIX_CS
:
override
->
segment
=
PREFIX_CS
;
override
->
segment
=
PREFIX_CS
_
;
goto
do_next_byte
;
goto
do_next_byte
;
case
PREFIX_ES
:
case
PREFIX_ES
:
override
->
segment
=
PREFIX_ES
;
override
->
segment
=
PREFIX_ES
_
;
goto
do_next_byte
;
goto
do_next_byte
;
case
PREFIX_SS
:
case
PREFIX_SS
:
override
->
segment
=
PREFIX_SS
;
override
->
segment
=
PREFIX_SS
_
;
goto
do_next_byte
;
goto
do_next_byte
;
case
PREFIX_FS
:
case
PREFIX_FS
:
override
->
segment
=
PREFIX_FS
;
override
->
segment
=
PREFIX_FS
_
;
goto
do_next_byte
;
goto
do_next_byte
;
case
PREFIX_GS
:
case
PREFIX_GS
:
override
->
segment
=
PREFIX_GS
;
override
->
segment
=
PREFIX_GS
_
;
goto
do_next_byte
;
goto
do_next_byte
;
case
PREFIX_DS
:
/* Redundant unless preceded by another override. */
case
PREFIX_DS
:
/* Redundant unless preceded by another override. */
override
->
segment
=
PREFIX_DS
;
override
->
segment
=
PREFIX_DS
_
;
/* lock is not a valid prefix for FPU instructions,
/* lock is not a valid prefix for FPU instructions,
let the cpu handle it to generate a SIGILL. */
let the cpu handle it to generate a SIGILL. */
...
@@ -635,7 +635,7 @@ static int valid_prefix(unsigned char *Byte, unsigned char **fpu_eip,
...
@@ -635,7 +635,7 @@ static int valid_prefix(unsigned char *Byte, unsigned char **fpu_eip,
}
}
void
__
math_abort
(
struct
info
*
info
,
unsigned
int
signal
)
void
math_abort
(
struct
info
*
info
,
unsigned
int
signal
)
{
{
FPU_EIP
=
FPU_ORIG_EIP
;
FPU_EIP
=
FPU_ORIG_EIP
;
current
->
tss
.
trap_no
=
16
;
current
->
tss
.
trap_no
=
16
;
...
...
drivers/FPU-emu/fpu_proto.h
View file @
350827b4
...
@@ -52,7 +52,7 @@ extern void fstp_i(void);
...
@@ -52,7 +52,7 @@ extern void fstp_i(void);
/* fpu_entry.c */
/* fpu_entry.c */
asmlinkage
void
math_emulate
(
long
arg
);
asmlinkage
void
math_emulate
(
long
arg
);
extern
void
__
math_abort
(
struct
info
*
info
,
unsigned
int
signal
);
extern
void
math_abort
(
struct
info
*
info
,
unsigned
int
signal
);
/* fpu_etc.c */
/* fpu_etc.c */
extern
void
fp_etc
(
void
);
extern
void
fp_etc
(
void
);
...
...
drivers/FPU-emu/fpu_system.h
View file @
350827b4
...
@@ -25,10 +25,6 @@
...
@@ -25,10 +25,6 @@
#define FPU_CS (*(unsigned short *) &(FPU_info->___cs))
#define FPU_CS (*(unsigned short *) &(FPU_info->___cs))
#define FPU_SS (*(unsigned short *) &(FPU_info->___ss))
#define FPU_SS (*(unsigned short *) &(FPU_info->___ss))
#define FPU_DS (*(unsigned short *) &(FPU_info->___ds))
#define FPU_DS (*(unsigned short *) &(FPU_info->___ds))
#define FPU_VM86_ES ((&FPU_SS)[2])
#define FPU_VM86_DS ((&FPU_SS)[4])
#define FPU_VM86_FS ((&FPU_SS)[6])
#define FPU_VM86_GS ((&FPU_SS)[8])
#define FPU_EAX (FPU_info->___eax)
#define FPU_EAX (FPU_info->___eax)
#define FPU_EFLAGS (FPU_info->___eflags)
#define FPU_EFLAGS (FPU_info->___eflags)
#define FPU_EIP (FPU_info->___eip)
#define FPU_EIP (FPU_info->___eip)
...
...
drivers/FPU-emu/get_address.c
View file @
350827b4
...
@@ -39,6 +39,18 @@ static int reg_offset[] = {
...
@@ -39,6 +39,18 @@ static int reg_offset[] = {
#define REG_(x) (*(long *)(reg_offset[(x)]+(char *) FPU_info))
#define REG_(x) (*(long *)(reg_offset[(x)]+(char *) FPU_info))
static
int
reg_offset_vm86
[]
=
{
offsetof
(
struct
info
,
___cs
),
offsetof
(
struct
info
,
___vm86_ds
),
offsetof
(
struct
info
,
___vm86_es
),
offsetof
(
struct
info
,
___vm86_fs
),
offsetof
(
struct
info
,
___vm86_gs
),
offsetof
(
struct
info
,
___ss
)
};
#define VM86_REG_(x) (*(unsigned short *) \
(reg_offset_vm86[((unsigned)x)]+(char *) FPU_info))
/* Decode the SIB byte. This function assumes mod != 0 */
/* Decode the SIB byte. This function assumes mod != 0 */
static
void
*
sib
(
int
mod
,
unsigned
long
*
fpu_eip
)
static
void
*
sib
(
int
mod
,
unsigned
long
*
fpu_eip
)
...
@@ -94,32 +106,18 @@ static void *sib(int mod, unsigned long *fpu_eip)
...
@@ -94,32 +106,18 @@ static void *sib(int mod, unsigned long *fpu_eip)
return
(
void
*
)
offset
;
return
(
void
*
)
offset
;
}
}
static
unsigned
long
vm86_segment
(
char
segment
)
static
unsigned
long
vm86_segment
(
unsigned
char
segment
)
{
{
switch
(
segment
)
segment
--
;
#ifdef PARANOID
if
(
segment
>
PREFIX_SS_
)
{
{
case
PREFIX_CS
:
return
FPU_CS
<<
4
;
break
;
case
PREFIX_SS
:
return
FPU_SS
<<
4
;
break
;
case
PREFIX_ES
:
return
FPU_VM86_ES
<<
4
;
break
;
case
PREFIX_DS
:
return
FPU_VM86_DS
<<
4
;
break
;
case
PREFIX_FS
:
return
FPU_VM86_FS
<<
4
;
break
;
case
PREFIX_GS
:
return
FPU_VM86_GS
<<
4
;
break
;
default:
EXCEPTION
(
EX_INTERNAL
|
0x130
);
EXCEPTION
(
EX_INTERNAL
|
0x130
);
return
0
;
/* Keep gcc quiet. */
math_abort
(
FPU_info
,
SIGSEGV
);
}
}
#endif PARANOID
return
(
unsigned
long
)
VM86_REG_
(
segment
)
<<
4
;
}
}
...
@@ -156,7 +154,7 @@ void get_address(unsigned char FPU_modrm, unsigned long *fpu_eip,
...
@@ -156,7 +154,7 @@ void get_address(unsigned char FPU_modrm, unsigned long *fpu_eip,
in 32 bit protected mode. */
in 32 bit protected mode. */
#define FPU_WRITE_BIT 0x10
#define FPU_WRITE_BIT 0x10
if
(
!
addr_modes
.
vm86
&&
(
FPU_modrm
&
FPU_WRITE_BIT
)
if
(
!
addr_modes
.
vm86
&&
(
FPU_modrm
&
FPU_WRITE_BIT
)
&&
(
addr_modes
.
override
.
segment
==
PREFIX_CS
)
)
&&
(
addr_modes
.
override
.
segment
==
PREFIX_CS
_
)
)
{
{
math_abort
(
FPU_info
,
SIGSEGV
);
math_abort
(
FPU_info
,
SIGSEGV
);
}
}
...
@@ -235,7 +233,7 @@ void get_address_16(unsigned char FPU_modrm, unsigned long *fpu_eip,
...
@@ -235,7 +233,7 @@ void get_address_16(unsigned char FPU_modrm, unsigned long *fpu_eip,
in 32 bit protected mode. */
in 32 bit protected mode. */
#define FPU_WRITE_BIT 0x10
#define FPU_WRITE_BIT 0x10
if
(
!
addr_modes
.
vm86
&&
(
FPU_modrm
&
FPU_WRITE_BIT
)
if
(
!
addr_modes
.
vm86
&&
(
FPU_modrm
&
FPU_WRITE_BIT
)
&&
(
addr_modes
.
override
.
segment
==
PREFIX_CS
)
)
&&
(
addr_modes
.
override
.
segment
==
PREFIX_CS
_
)
)
{
{
math_abort
(
FPU_info
,
SIGSEGV
);
math_abort
(
FPU_info
,
SIGSEGV
);
}
}
...
...
drivers/FPU-emu/reg_ld_str.c
View file @
350827b4
...
@@ -1205,6 +1205,10 @@ char *fldenv(fpu_addr_modes addr_modes)
...
@@ -1205,6 +1205,10 @@ char *fldenv(fpu_addr_modes addr_modes)
s
+=
0x1c
;
s
+=
0x1c
;
}
}
#ifdef PECULIAR_486
control_word
&=
~
0xe080
;
#endif PECULIAR_486
top
=
(
partial_status
>>
SW_Top_Shift
)
&
7
;
top
=
(
partial_status
>>
SW_Top_Shift
)
&
7
;
if
(
partial_status
&
~
control_word
&
CW_Exceptions
)
if
(
partial_status
&
~
control_word
&
CW_Exceptions
)
...
@@ -1318,7 +1322,11 @@ char *fstenv(fpu_addr_modes addr_modes)
...
@@ -1318,7 +1322,11 @@ char *fstenv(fpu_addr_modes addr_modes)
{
{
RE_ENTRANT_CHECK_OFF
;
RE_ENTRANT_CHECK_OFF
;
FPU_verify_area
(
VERIFY_WRITE
,
d
,
14
);
FPU_verify_area
(
VERIFY_WRITE
,
d
,
14
);
#ifdef PECULIAR_486
put_fs_long
(
control_word
&
~
0xe080
,
(
unsigned
short
*
)
d
);
#else
put_fs_word
(
control_word
,
(
unsigned
short
*
)
d
);
put_fs_word
(
control_word
,
(
unsigned
short
*
)
d
);
#endif PECULIAR_486
put_fs_word
(
status_word
(),
(
unsigned
short
*
)
(
d
+
2
));
put_fs_word
(
status_word
(),
(
unsigned
short
*
)
(
d
+
2
));
put_fs_word
(
tag_word
(),
(
unsigned
short
*
)
(
d
+
4
));
put_fs_word
(
tag_word
(),
(
unsigned
short
*
)
(
d
+
4
));
put_fs_word
(
ip_offset
,
(
unsigned
short
*
)
(
d
+
6
));
put_fs_word
(
ip_offset
,
(
unsigned
short
*
)
(
d
+
6
));
...
...
drivers/FPU-emu/reg_round.S
View file @
350827b4
...
@@ -156,9 +156,19 @@ xDenorm_done:
...
@@ -156,9 +156,19 @@ xDenorm_done:
cmpl
PR_24_BITS
,%
ecx
cmpl
PR_24_BITS
,%
ecx
je
LRound_To_24
je
LRound_To_24
#ifdef PECULIAR_486
/*
With
the
precision
control
bits
set
to
01
"(reserved)"
,
a
real
80486
behaves
as
if
the
precision
control
bits
were
set
to
11
"64 bits"
*/
cmpl
PR_RESERVED_BITS
,%
ecx
je
LRound_To_64
#ifdef PARANOID
jmp
L_bugged_denorm_486
#endif PARANOID
#else
#ifdef PARANOID
#ifdef PARANOID
jmp
L_bugged_denorm
/*
There
is
no
bug
,
just
a
bad
control
word
*/
jmp
L_bugged_denorm
/*
There
is
no
bug
,
just
a
bad
control
word
*/
#endif PARANOID
#endif PARANOID
#endif PECULIAR_486
/*
Round
etc
to
24
bit
precision
*/
/*
Round
etc
to
24
bit
precision
*/
...
@@ -643,12 +653,19 @@ xDo_unmasked_underflow:
...
@@ -643,12 +653,19 @@ xDo_unmasked_underflow:
#ifdef PARANOID
#ifdef PARANOID
/*
If
we
ever
get
here
then
we
have
problems
!
*/
#ifdef PECULIAR_486
L_bugged_denorm_486
:
pushl
EX_INTERNAL
|
0x236
call
EXCEPTION
popl
%
ebx
jmp
L_exception_exit
#else
L_bugged_denorm
:
L_bugged_denorm
:
pushl
EX_INTERNAL
|
0x230
pushl
EX_INTERNAL
|
0x230
call
EXCEPTION
call
EXCEPTION
popl
%
ebx
popl
%
ebx
jmp
L_exception_exit
jmp
L_exception_exit
#endif PECULIAR_486
L_bugged_round24
:
L_bugged_round24
:
pushl
EX_INTERNAL
|
0x231
pushl
EX_INTERNAL
|
0x231
...
...
drivers/char/serial.c
View file @
350827b4
...
@@ -258,7 +258,13 @@ static void rs_stop(struct tty_struct *tty)
...
@@ -258,7 +258,13 @@ static void rs_stop(struct tty_struct *tty)
struct
async_struct
*
info
;
struct
async_struct
*
info
;
info
=
rs_table
+
DEV_TO_SL
(
tty
->
line
);
info
=
rs_table
+
DEV_TO_SL
(
tty
->
line
);
if
(
info
->
flags
&
ASYNC_CLOSING
)
{
tty
->
stopped
=
0
;
tty
->
hw_stopped
=
0
;
return
;
}
info
->
IER
=
UART_IER_MSI
|
UART_IER_RLSI
|
UART_IER_RDI
;
info
->
IER
=
UART_IER_MSI
|
UART_IER_RLSI
|
UART_IER_RDI
;
#ifdef ISR_HACK
#ifdef ISR_HACK
serial_out
(
info
,
UART_IER
,
info
->
IER
);
serial_out
(
info
,
UART_IER
,
info
->
IER
);
...
@@ -431,7 +437,7 @@ static inline int check_modem_status(struct async_struct *info)
...
@@ -431,7 +437,7 @@ static inline int check_modem_status(struct async_struct *info)
rs_sched_event
(
info
,
RS_EVENT_HANGUP
);
rs_sched_event
(
info
,
RS_EVENT_HANGUP
);
}
}
}
}
if
(
C_CRTSCTS
(
info
->
tty
))
{
if
(
C_CRTSCTS
(
info
->
tty
)
&&
!
(
info
->
flags
&
ASYNC_CLOSING
)
)
{
if
(
info
->
tty
->
hw_stopped
)
{
if
(
info
->
tty
->
hw_stopped
)
{
if
(
status
&
UART_MSR_CTS
)
{
if
(
status
&
UART_MSR_CTS
)
{
#ifdef SERIAL_DEBUG_INTR
#ifdef SERIAL_DEBUG_INTR
...
@@ -1029,9 +1035,11 @@ void rs_write(struct tty_struct * tty)
...
@@ -1029,9 +1035,11 @@ void rs_write(struct tty_struct * tty)
if
(
!
tty
||
tty
->
stopped
||
tty
->
hw_stopped
)
if
(
!
tty
||
tty
->
stopped
||
tty
->
hw_stopped
)
return
;
return
;
info
=
rs_table
+
DEV_TO_SL
(
tty
->
line
);
info
=
rs_table
+
DEV_TO_SL
(
tty
->
line
);
if
(
!
info
||
!
info
->
tty
||
!
(
info
->
flags
&
ASYNC_INITIALIZED
))
return
;
cli
();
cli
();
if
(
!
info
||
!
info
->
tty
||
!
(
info
->
flags
&
ASYNC_INITIALIZED
))
{
sti
();
return
;
}
restart_port
(
info
);
restart_port
(
info
);
info
->
IER
=
(
UART_IER_MSI
|
UART_IER_RLSI
|
info
->
IER
=
(
UART_IER_MSI
|
UART_IER_RLSI
|
UART_IER_THRI
|
UART_IER_RDI
);
UART_IER_THRI
|
UART_IER_RDI
);
...
...
drivers/char/tpqic02.c
View file @
350827b4
...
@@ -1816,7 +1816,7 @@ static int tape_qic02_read(struct inode * inode, struct file * filp, char * buf,
...
@@ -1816,7 +1816,7 @@ static int tape_qic02_read(struct inode * inode, struct file * filp, char * buf,
int
stat
;
int
stat
;
if
(
TP_DIAGS
(
current_tape_dev
))
if
(
TP_DIAGS
(
current_tape_dev
))
printk
(
TPQIC_NAME
": request READ, minor=%x, buf=%
lx
, count=%x, pos=%x, flags=%x
\n
"
,
printk
(
TPQIC_NAME
": request READ, minor=%x, buf=%
p
, count=%x, pos=%x, flags=%x
\n
"
,
MINOR
(
dev
),
buf
,
count
,
filp
->
f_pos
,
flags
);
MINOR
(
dev
),
buf
,
count
,
filp
->
f_pos
,
flags
);
if
(
count
%
TAPE_BLKSIZE
)
{
/* Only allow mod 512 bytes at a time. */
if
(
count
%
TAPE_BLKSIZE
)
{
/* Only allow mod 512 bytes at a time. */
...
@@ -1833,7 +1833,7 @@ static int tape_qic02_read(struct inode * inode, struct file * filp, char * buf,
...
@@ -1833,7 +1833,7 @@ static int tape_qic02_read(struct inode * inode, struct file * filp, char * buf,
/* Make sure buffer is safe to write into. */
/* Make sure buffer is safe to write into. */
error
=
verify_area
(
VERIFY_WRITE
,
buf
,
count
);
error
=
verify_area
(
VERIFY_WRITE
,
buf
,
count
);
if
(
error
)
{
if
(
error
)
{
printk
(
TPQIC_NAME
": read: verify_area(WRITE, %
lx
, %x) failed
\n
"
,
buf
,
count
);
printk
(
TPQIC_NAME
": read: verify_area(WRITE, %
p
, %x) failed
\n
"
,
buf
,
count
);
return
error
;
return
error
;
}
}
...
@@ -1985,7 +1985,7 @@ static int tape_qic02_write(struct inode * inode, struct file * filp, char * buf
...
@@ -1985,7 +1985,7 @@ static int tape_qic02_write(struct inode * inode, struct file * filp, char * buf
unsigned
long
bytes_todo
,
bytes_done
,
total_bytes_done
=
0
;
unsigned
long
bytes_todo
,
bytes_done
,
total_bytes_done
=
0
;
if
(
TP_DIAGS
(
current_tape_dev
))
if
(
TP_DIAGS
(
current_tape_dev
))
printk
(
TPQIC_NAME
": request WRITE, minor=%x, buf=%
lx
, count=%x, pos=%x, flags=%x
\n
"
,
printk
(
TPQIC_NAME
": request WRITE, minor=%x, buf=%
p
, count=%x, pos=%x, flags=%x
\n
"
,
MINOR
(
dev
),
buf
,
count
,
filp
->
f_pos
,
flags
);
MINOR
(
dev
),
buf
,
count
,
filp
->
f_pos
,
flags
);
if
(
count
%
TAPE_BLKSIZE
)
{
/* only allow mod 512 bytes at a time */
if
(
count
%
TAPE_BLKSIZE
)
{
/* only allow mod 512 bytes at a time */
...
@@ -2010,7 +2010,7 @@ static int tape_qic02_write(struct inode * inode, struct file * filp, char * buf
...
@@ -2010,7 +2010,7 @@ static int tape_qic02_write(struct inode * inode, struct file * filp, char * buf
/* Make sure buffer is safe to read from. */
/* Make sure buffer is safe to read from. */
error
=
verify_area
(
VERIFY_READ
,
buf
,
count
);
error
=
verify_area
(
VERIFY_READ
,
buf
,
count
);
if
(
error
)
{
if
(
error
)
{
printk
(
TPQIC_NAME
": write: verify_area(READ, %
lx
, %x) failed
\n
"
,
buf
,
count
);
printk
(
TPQIC_NAME
": write: verify_area(READ, %
p
, %x) failed
\n
"
,
buf
,
count
);
return
error
;
return
error
;
}
}
...
@@ -2107,7 +2107,7 @@ static int tape_qic02_write(struct inode * inode, struct file * filp, char * buf
...
@@ -2107,7 +2107,7 @@ static int tape_qic02_write(struct inode * inode, struct file * filp, char * buf
}
}
}
}
tpqputs
(
"write request for <0 bytes"
);
tpqputs
(
"write request for <0 bytes"
);
printk
(
TPQIC_NAME
": status_bytes_wr %x, buf %
x
, total_bytes_done %x, count %x
\n
"
,
status_bytes_wr
,
buf
,
total_bytes_done
,
count
);
printk
(
TPQIC_NAME
": status_bytes_wr %x, buf %
p
, total_bytes_done %x, count %x
\n
"
,
status_bytes_wr
,
buf
,
total_bytes_done
,
count
);
return
-
EINVAL
;
return
-
EINVAL
;
}
/* tape_qic02_write */
}
/* tape_qic02_write */
...
...
drivers/net/slip.c
View file @
350827b4
...
@@ -19,6 +19,7 @@
...
@@ -19,6 +19,7 @@
* Alan Cox : Honours the old SL_COMPRESSED flag
* Alan Cox : Honours the old SL_COMPRESSED flag
* Alan Cox : KISS AX.25 and AXUI IP support
* Alan Cox : KISS AX.25 and AXUI IP support
* Michael Riepe : Automatic CSLIP recognition added
* Michael Riepe : Automatic CSLIP recognition added
* Charles Hedrick : CSLIP header length problem fix.
*/
*/
#include <asm/segment.h>
#include <asm/segment.h>
...
@@ -522,6 +523,8 @@ sl_xmit(struct sk_buff *skb, struct device *dev)
...
@@ -522,6 +523,8 @@ sl_xmit(struct sk_buff *skb, struct device *dev)
{
{
struct
tty_struct
*
tty
;
struct
tty_struct
*
tty
;
struct
slip
*
sl
;
struct
slip
*
sl
;
int
size
;
/* Find the correct SLIP channel to use. */
/* Find the correct SLIP channel to use. */
sl
=
&
sl_ctrl
[
dev
->
base_addr
];
sl
=
&
sl_ctrl
[
dev
->
base_addr
];
...
@@ -555,8 +558,19 @@ sl_xmit(struct sk_buff *skb, struct device *dev)
...
@@ -555,8 +558,19 @@ sl_xmit(struct sk_buff *skb, struct device *dev)
}
}
#endif
#endif
sl_lock
(
sl
);
sl_lock
(
sl
);
/* sl_hex_dump(skb->data,skb->len);*/
sl_encaps
(
sl
,
skb
->
data
,
skb
->
len
);
size
=
skb
->
len
;
if
(
size
<
sizeof
(
struct
iphdr
))
{
printk
(
"Runt IP frame fed to slip!
\n
"
);
}
else
{
size
=
((
struct
iphdr
*
)(
skb
->
data
))
->
tot_len
;
size
=
ntohs
(
size
);
/* sl_hex_dump(skb->data,skb->len);*/
sl_encaps
(
sl
,
skb
->
data
,
size
);
}
if
(
skb
->
free
)
kfree_skb
(
skb
,
FREE_WRITE
);
if
(
skb
->
free
)
kfree_skb
(
skb
,
FREE_WRITE
);
}
}
return
(
0
);
return
(
0
);
...
...
drivers/scsi/aha1542.c
View file @
350827b4
...
@@ -675,7 +675,7 @@ static int aha1542_mbenable(int base)
...
@@ -675,7 +675,7 @@ static int aha1542_mbenable(int base)
WAIT
(
INTRFLAGS
(
base
),
INTRMASK
,
HACC
,
0
);
WAIT
(
INTRFLAGS
(
base
),
INTRMASK
,
HACC
,
0
);
aha1542_intr_reset
(
base
);
aha1542_intr_reset
(
base
);
if
(
mbenable_result
[
0
]
&
0x08
)
{
if
(
(
mbenable_result
[
0
]
&
0x08
)
||
mbenable_result
[
1
]
)
{
mbenable_cmd
[
0
]
=
CMD_MBENABLE
;
mbenable_cmd
[
0
]
=
CMD_MBENABLE
;
mbenable_cmd
[
1
]
=
0
;
mbenable_cmd
[
1
]
=
0
;
mbenable_cmd
[
2
]
=
mbenable_result
[
1
];
mbenable_cmd
[
2
]
=
mbenable_result
[
1
];
...
...
drivers/scsi/constants.c
View file @
350827b4
...
@@ -18,7 +18,7 @@ static const char unknown[] = "UNKNOWN";
...
@@ -18,7 +18,7 @@ static const char unknown[] = "UNKNOWN";
#ifdef CONSTANTS
#ifdef CONSTANTS
#undef CONSTANTS
#undef CONSTANTS
#endif
#endif
#define CONSTANTS (CONST_C
M
D | CONST_STATUS | CONST_SENSE | CONST_XSENSE)
#define CONSTANTS (CONST_C
OMMAN
D | CONST_STATUS | CONST_SENSE | CONST_XSENSE)
#endif
#endif
#if (CONSTANTS & CONST_COMMAND)
#if (CONSTANTS & CONST_COMMAND)
...
...
fs/buffer.c
View file @
350827b4
...
@@ -484,17 +484,15 @@ struct buffer_head * getblk(dev_t dev, int block, int size)
...
@@ -484,17 +484,15 @@ struct buffer_head * getblk(dev_t dev, int block, int size)
#endif
#endif
}
}
if
(
!
bh
&&
nr_free_pages
>
5
)
{
if
(
grow_buffers
(
GFP_BUFFER
,
size
))
goto
repeat
;
}
/* and repeat until we find something good */
if
(
!
bh
)
{
if
(
!
bh
)
{
if
(
nr_free_pages
>
5
)
if
(
grow_buffers
(
GFP_BUFFER
,
size
))
goto
repeat
;
if
(
!
grow_buffers
(
GFP_ATOMIC
,
size
))
if
(
!
grow_buffers
(
GFP_ATOMIC
,
size
))
sleep_on
(
&
buffer_wait
);
sleep_on
(
&
buffer_wait
);
goto
repeat
;
goto
repeat
;
}
}
wait_on_buffer
(
bh
);
wait_on_buffer
(
bh
);
if
(
bh
->
b_count
||
bh
->
b_size
!=
size
)
if
(
bh
->
b_count
||
bh
->
b_size
!=
size
)
goto
repeat
;
goto
repeat
;
...
@@ -920,7 +918,7 @@ static int try_to_free(struct buffer_head * bh, struct buffer_head ** bhp)
...
@@ -920,7 +918,7 @@ static int try_to_free(struct buffer_head * bh, struct buffer_head ** bhp)
do
{
do
{
if
(
!
tmp
)
if
(
!
tmp
)
return
0
;
return
0
;
if
(
tmp
->
b_count
||
tmp
->
b_dirt
||
tmp
->
b_lock
)
if
(
tmp
->
b_count
||
tmp
->
b_dirt
||
tmp
->
b_lock
||
tmp
->
b_wait
)
return
0
;
return
0
;
tmp
=
tmp
->
b_this_page
;
tmp
=
tmp
->
b_this_page
;
}
while
(
tmp
!=
bh
);
}
while
(
tmp
!=
bh
);
...
...
fs/exec.c
View file @
350827b4
...
@@ -134,7 +134,11 @@ int core_dump(long signr, struct pt_regs * regs)
...
@@ -134,7 +134,11 @@ int core_dump(long signr, struct pt_regs * regs)
fs
=
get_fs
();
fs
=
get_fs
();
set_fs
(
KERNEL_DS
);
set_fs
(
KERNEL_DS
);
memcpy
(
corefile
,
"core."
,
5
);
memcpy
(
corefile
,
"core."
,
5
);
#if 0
memcpy(corefile+5,current->comm,sizeof(current->comm));
memcpy(corefile+5,current->comm,sizeof(current->comm));
#else
corefile
[
4
]
=
'\0'
;
#endif
if
(
open_namei
(
corefile
,
O_CREAT
|
2
|
O_TRUNC
,
0600
,
&
inode
,
NULL
))
{
if
(
open_namei
(
corefile
,
O_CREAT
|
2
|
O_TRUNC
,
0600
,
&
inode
,
NULL
))
{
inode
=
NULL
;
inode
=
NULL
;
goto
end_coredump
;
goto
end_coredump
;
...
...
fs/proc/array.c
View file @
350827b4
...
@@ -42,9 +42,9 @@ static int read_core(struct inode * inode, struct file * file,char * buf, int co
...
@@ -42,9 +42,9 @@ static int read_core(struct inode * inode, struct file * file,char * buf, int co
if
(
count
<
0
)
if
(
count
<
0
)
return
-
EINVAL
;
return
-
EINVAL
;
if
(
p
>=
high_memory
)
if
(
p
>=
high_memory
+
PAGE_SIZE
)
return
0
;
return
0
;
if
(
count
>
high_memory
-
p
)
if
(
count
>
high_memory
+
PAGE_SIZE
-
p
)
count
=
high_memory
-
p
;
count
=
high_memory
-
p
;
read
=
0
;
read
=
0
;
...
...
include/linux/fs.h
View file @
350827b4
...
@@ -320,12 +320,13 @@ extern int getname(const char * filename, char **result);
...
@@ -320,12 +320,13 @@ extern int getname(const char * filename, char **result);
extern
void
putname
(
char
*
name
);
extern
void
putname
(
char
*
name
);
extern
int
register_blkdev
(
unsigned
int
,
const
char
*
,
struct
file_operations
*
);
extern
int
register_blkdev
(
unsigned
int
,
const
char
*
,
struct
file_operations
*
);
extern
int
unregister_blkdev
(
unsigned
int
major
,
const
char
*
name
);
extern
int
blkdev_open
(
struct
inode
*
inode
,
struct
file
*
filp
);
extern
int
blkdev_open
(
struct
inode
*
inode
,
struct
file
*
filp
);
extern
struct
file_operations
def_blk_fops
;
extern
struct
file_operations
def_blk_fops
;
extern
struct
inode_operations
blkdev_inode_operations
;
extern
struct
inode_operations
blkdev_inode_operations
;
extern
int
register_chrdev
(
unsigned
int
,
const
char
*
,
struct
file_operations
*
);
extern
int
register_chrdev
(
unsigned
int
,
const
char
*
,
struct
file_operations
*
);
extern
int
unregister_chrdev
(
unsigned
int
major
,
const
char
*
name
);
extern
int
unregister_chrdev
(
unsigned
int
major
,
const
char
*
name
);
extern
int
chrdev_open
(
struct
inode
*
inode
,
struct
file
*
filp
);
extern
int
chrdev_open
(
struct
inode
*
inode
,
struct
file
*
filp
);
extern
struct
file_operations
def_chr_fops
;
extern
struct
file_operations
def_chr_fops
;
extern
struct
inode_operations
chrdev_inode_operations
;
extern
struct
inode_operations
chrdev_inode_operations
;
...
...
include/linux/math_emu.h
View file @
350827b4
...
@@ -9,6 +9,11 @@ struct fpu_reg {
...
@@ -9,6 +9,11 @@ struct fpu_reg {
unsigned
sigh
;
unsigned
sigh
;
};
};
/* This structure matches the layout of the data saved to the stack
following a device-not-present interrupt, part of it saved
automatically by the 80386/80486.
*/
struct
info
{
struct
info
{
long
___orig_eip
;
long
___orig_eip
;
long
___ret_from_system_call
;
long
___ret_from_system_call
;
...
@@ -29,30 +34,10 @@ struct info {
...
@@ -29,30 +34,10 @@ struct info {
long
___eflags
;
long
___eflags
;
long
___esp
;
long
___esp
;
long
___ss
;
long
___ss
;
long
___vm86_es
;
/* This and the following only in vm86 mode */
long
___vm86_ds
;
long
___vm86_fs
;
long
___vm86_gs
;
};
};
#if 0
#define EAX (info->___eax)
#define EBX (info->___ebx)
#define ECX (info->___ecx)
#define EDX (info->___edx)
#define ESI (info->___esi)
#define EDI (info->___edi)
#define EBP (info->___ebp)
#define ESP (info->___esp)
#define EIP (info->___eip)
#define ORIG_EIP (info->___orig_eip)
#define EFLAGS (info->___eflags)
#define DS (*(unsigned short *) &(info->___ds))
#define ES (*(unsigned short *) &(info->___es))
#define FS (*(unsigned short *) &(info->___fs))
#define CS (*(unsigned short *) &(info->___cs))
#define SS (*(unsigned short *) &(info->___ss))
#endif
void
__math_abort
(
struct
info
*
,
unsigned
int
);
#define math_abort(x,y) \
(((volatile void (*)(struct info *,unsigned int)) __math_abort)((x),(y)))
#endif
#endif
include/linux/mm.h
View file @
350827b4
...
@@ -11,7 +11,7 @@
...
@@ -11,7 +11,7 @@
int
__verify_write
(
unsigned
long
addr
,
unsigned
long
count
);
int
__verify_write
(
unsigned
long
addr
,
unsigned
long
count
);
extern
inline
int
verify_area
(
int
type
,
void
*
addr
,
unsigned
long
size
)
extern
inline
int
verify_area
(
int
type
,
const
void
*
addr
,
unsigned
long
size
)
{
{
if
(
TASK_SIZE
<=
(
unsigned
long
)
addr
)
if
(
TASK_SIZE
<=
(
unsigned
long
)
addr
)
return
-
EFAULT
;
return
-
EFAULT
;
...
...
kernel/ksyms.S
View file @
350827b4
...
@@ -9,6 +9,8 @@
...
@@ -9,6 +9,8 @@
_register_chrdev
_register_chrdev
_unregister_chrdev
_unregister_chrdev
_register_blkdev
_unregister_blkdev
_wake_up_interruptible
_wake_up_interruptible
_wp_works_ok
_wp_works_ok
...
...
kernel/signal.c
View file @
350827b4
...
@@ -235,11 +235,13 @@ if (!(context.x & 0xfffc) || (context.x & 3) != 3) goto badframe; COPY(x);
...
@@ -235,11 +235,13 @@ if (!(context.x & 0xfffc) || (context.x & 3) != 3) goto badframe; COPY(x);
COPY_SEG
(
gs
);
COPY_SEG
(
gs
);
COPY_SEG_STRICT
(
ss
);
COPY_SEG_STRICT
(
ss
);
COPY_SEG_STRICT
(
cs
);
COPY_SEG_STRICT
(
cs
);
COPY
(
eip
);
COPY
(
eflags
);
COPY
(
eip
);
COPY
(
ecx
);
COPY
(
edx
);
COPY
(
ecx
);
COPY
(
edx
);
COPY
(
ebx
);
COPY
(
ebx
);
COPY
(
esp
);
COPY
(
ebp
);
COPY
(
esp
);
COPY
(
ebp
);
COPY
(
edi
);
COPY
(
esi
);
COPY
(
edi
);
COPY
(
esi
);
regs
->
eflags
&=
~
0xCD5
;
regs
->
eflags
|=
context
.
eflags
&
0xCD5
;
regs
->
orig_eax
=
-
1
;
/* disable syscall checks */
regs
->
orig_eax
=
-
1
;
/* disable syscall checks */
return
context
.
eax
;
return
context
.
eax
;
badframe:
badframe:
...
...
net/inet/tcp.c
View file @
350827b4
...
@@ -59,6 +59,7 @@
...
@@ -59,6 +59,7 @@
* Alan Cox : Added a couple of small NET2E timer fixes
* Alan Cox : Added a couple of small NET2E timer fixes
* Charles Hedrick : TCP fixes
* Charles Hedrick : TCP fixes
* Toomas Tamm : TCP window fixes
* Toomas Tamm : TCP window fixes
* Alan Cox : Small URG fix to rlogin ^C ack fight
*
*
*
*
* To Fix:
* To Fix:
...
@@ -1314,6 +1315,8 @@ tcp_read_urg(struct sock * sk, int nonblock,
...
@@ -1314,6 +1315,8 @@ tcp_read_urg(struct sock * sk, int nonblock,
do
{
do
{
int
amt
;
int
amt
;
if
(
before
(
sk
->
copied_seq
+
1
,
skb
->
h
.
th
->
seq
))
break
;
if
(
skb
->
h
.
th
->
urg
&&
!
skb
->
urg_used
)
{
if
(
skb
->
h
.
th
->
urg
&&
!
skb
->
urg_used
)
{
if
(
skb
->
h
.
th
->
urg_ptr
==
0
)
{
if
(
skb
->
h
.
th
->
urg_ptr
==
0
)
{
skb
->
h
.
th
->
urg_ptr
=
ntohs
(
skb
->
len
);
skb
->
h
.
th
->
urg_ptr
=
ntohs
(
skb
->
len
);
...
@@ -1329,6 +1332,7 @@ tcp_read_urg(struct sock * sk, int nonblock,
...
@@ -1329,6 +1332,7 @@ tcp_read_urg(struct sock * sk, int nonblock,
skb
->
urg_used
=
1
;
skb
->
urg_used
=
1
;
sk
->
urg
--
;
sk
->
urg
--
;
}
}
cleanup_rbuf
(
sk
);
release_sock
(
sk
);
release_sock
(
sk
);
copied
+=
amt
;
copied
+=
amt
;
return
(
copied
);
return
(
copied
);
...
@@ -1337,6 +1341,7 @@ tcp_read_urg(struct sock * sk, int nonblock,
...
@@ -1337,6 +1341,7 @@ tcp_read_urg(struct sock * sk, int nonblock,
}
while
(
skb
!=
sk
->
rqueue
);
}
while
(
skb
!=
sk
->
rqueue
);
}
}
/*sk->urg = 0;*/
/*sk->urg = 0;*/
cleanup_rbuf
(
sk
);
release_sock
(
sk
);
release_sock
(
sk
);
return
(
0
);
return
(
0
);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment