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
079f066a
Commit
079f066a
authored
Jun 15, 2002
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
http://gkernel.bkbits.net/misc-2.5
into home.transmeta.com:/home/torvalds/v2.5/linux
parents
9356a66d
d2ab7c9c
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
58 additions
and
33 deletions
+58
-33
drivers/block/DAC960.c
drivers/block/DAC960.c
+18
-8
drivers/cdrom/mcd.c
drivers/cdrom/mcd.c
+5
-7
drivers/cdrom/mcdx.c
drivers/cdrom/mcdx.c
+10
-3
drivers/cdrom/optcd.c
drivers/cdrom/optcd.c
+5
-2
drivers/char/isicom.c
drivers/char/isicom.c
+5
-1
drivers/char/istallion.c
drivers/char/istallion.c
+9
-7
drivers/char/stallion.c
drivers/char/stallion.c
+6
-5
No files found.
drivers/block/DAC960.c
View file @
079f066a
...
@@ -2404,8 +2404,12 @@ static void DAC960_DetectControllers(DAC960_HardwareType_T HardwareType)
...
@@ -2404,8 +2404,12 @@ static void DAC960_DetectControllers(DAC960_HardwareType_T HardwareType)
DAC960_V1_QueueReadWriteCommand
;
DAC960_V1_QueueReadWriteCommand
;
break
;
break
;
case
DAC960_PD_Controller
:
case
DAC960_PD_Controller
:
request_region
(
Controller
->
IO_Address
,
0x80
,
if
(
!
request_region
(
Controller
->
IO_Address
,
0x80
,
Controller
->
FullModelName
);
Controller
->
FullModelName
))
{
DAC960_Error
(
"IO port 0x%d busy for Controller at
\n
"
,
Controller
,
Controller
->
IO_Address
);
goto
Failure
;
}
DAC960_PD_DisableInterrupts
(
BaseAddress
);
DAC960_PD_DisableInterrupts
(
BaseAddress
);
DAC960_PD_AcknowledgeStatus
(
BaseAddress
);
DAC960_PD_AcknowledgeStatus
(
BaseAddress
);
udelay
(
1000
);
udelay
(
1000
);
...
@@ -2415,7 +2419,7 @@ static void DAC960_DetectControllers(DAC960_HardwareType_T HardwareType)
...
@@ -2415,7 +2419,7 @@ static void DAC960_DetectControllers(DAC960_HardwareType_T HardwareType)
&
Parameter0
,
&
Parameter1
)
&&
&
Parameter0
,
&
Parameter1
)
&&
DAC960_ReportErrorStatus
(
Controller
,
ErrorStatus
,
DAC960_ReportErrorStatus
(
Controller
,
ErrorStatus
,
Parameter0
,
Parameter1
))
Parameter0
,
Parameter1
))
goto
Failure
;
goto
Failure
1
;
udelay
(
10
);
udelay
(
10
);
}
}
DAC960_PD_EnableInterrupts
(
Controller
->
BaseAddress
);
DAC960_PD_EnableInterrupts
(
Controller
->
BaseAddress
);
...
@@ -2430,8 +2434,12 @@ static void DAC960_DetectControllers(DAC960_HardwareType_T HardwareType)
...
@@ -2430,8 +2434,12 @@ static void DAC960_DetectControllers(DAC960_HardwareType_T HardwareType)
DAC960_V1_QueueReadWriteCommand
;
DAC960_V1_QueueReadWriteCommand
;
break
;
break
;
case
DAC960_P_Controller
:
case
DAC960_P_Controller
:
request_region
(
Controller
->
IO_Address
,
0x80
,
if
(
!
request_region
(
Controller
->
IO_Address
,
0x80
,
Controller
->
FullModelName
);
Controller
->
FullModelName
)){
DAC960_Error
(
"IO port 0x%d busy for Controller at
\n
"
,
Controller
,
Controller
->
IO_Address
);
goto
Failure
;
}
DAC960_PD_DisableInterrupts
(
BaseAddress
);
DAC960_PD_DisableInterrupts
(
BaseAddress
);
DAC960_PD_AcknowledgeStatus
(
BaseAddress
);
DAC960_PD_AcknowledgeStatus
(
BaseAddress
);
udelay
(
1000
);
udelay
(
1000
);
...
@@ -2441,7 +2449,7 @@ static void DAC960_DetectControllers(DAC960_HardwareType_T HardwareType)
...
@@ -2441,7 +2449,7 @@ static void DAC960_DetectControllers(DAC960_HardwareType_T HardwareType)
&
Parameter0
,
&
Parameter1
)
&&
&
Parameter0
,
&
Parameter1
)
&&
DAC960_ReportErrorStatus
(
Controller
,
ErrorStatus
,
DAC960_ReportErrorStatus
(
Controller
,
ErrorStatus
,
Parameter0
,
Parameter1
))
Parameter0
,
Parameter1
))
goto
Failure
;
goto
Failure
1
;
udelay
(
10
);
udelay
(
10
);
}
}
DAC960_PD_EnableInterrupts
(
Controller
->
BaseAddress
);
DAC960_PD_EnableInterrupts
(
Controller
->
BaseAddress
);
...
@@ -2463,7 +2471,7 @@ static void DAC960_DetectControllers(DAC960_HardwareType_T HardwareType)
...
@@ -2463,7 +2471,7 @@ static void DAC960_DetectControllers(DAC960_HardwareType_T HardwareType)
{
{
DAC960_Error
(
"IRQ Channel %d illegal for Controller at
\n
"
,
DAC960_Error
(
"IRQ Channel %d illegal for Controller at
\n
"
,
Controller
,
IRQ_Channel
);
Controller
,
IRQ_Channel
);
goto
Failure
;
goto
Failure
1
;
}
}
strcpy
(
Controller
->
FullModelName
,
"DAC960"
);
strcpy
(
Controller
->
FullModelName
,
"DAC960"
);
if
(
request_irq
(
IRQ_Channel
,
InterruptHandler
,
SA_SHIRQ
,
if
(
request_irq
(
IRQ_Channel
,
InterruptHandler
,
SA_SHIRQ
,
...
@@ -2471,7 +2479,7 @@ static void DAC960_DetectControllers(DAC960_HardwareType_T HardwareType)
...
@@ -2471,7 +2479,7 @@ static void DAC960_DetectControllers(DAC960_HardwareType_T HardwareType)
{
{
DAC960_Error
(
"Unable to acquire IRQ Channel %d for Controller at
\n
"
,
DAC960_Error
(
"Unable to acquire IRQ Channel %d for Controller at
\n
"
,
Controller
,
IRQ_Channel
);
Controller
,
IRQ_Channel
);
goto
Failure
;
goto
Failure
1
;
}
}
Controller
->
IRQ_Channel
=
IRQ_Channel
;
Controller
->
IRQ_Channel
=
IRQ_Channel
;
DAC960_ActiveControllerCount
++
;
DAC960_ActiveControllerCount
++
;
...
@@ -2481,6 +2489,8 @@ static void DAC960_DetectControllers(DAC960_HardwareType_T HardwareType)
...
@@ -2481,6 +2489,8 @@ static void DAC960_DetectControllers(DAC960_HardwareType_T HardwareType)
Controller
->
FreeCommands
=
&
Controller
->
InitialCommand
;
Controller
->
FreeCommands
=
&
Controller
->
InitialCommand
;
Controller
->
ControllerDetectionSuccessful
=
true
;
Controller
->
ControllerDetectionSuccessful
=
true
;
continue
;
continue
;
Failure1:
if
(
Controller
->
IO_Address
)
release_region
(
Controller
->
IO_Address
,
0x80
);
Failure:
Failure:
if
(
IO_Address
==
0
)
if
(
IO_Address
==
0
)
DAC960_Error
(
"PCI Bus %d Device %d Function %d I/O Address N/A "
DAC960_Error
(
"PCI Bus %d Device %d Function %d I/O Address N/A "
...
...
drivers/cdrom/mcd.c
View file @
079f066a
...
@@ -1069,7 +1069,7 @@ int __init mcd_init(void)
...
@@ -1069,7 +1069,7 @@ int __init mcd_init(void)
printk
(
KERN_ERR
"mcd: Unable to get major %d for Mitsumi CD-ROM
\n
"
,
MAJOR_NR
);
printk
(
KERN_ERR
"mcd: Unable to get major %d for Mitsumi CD-ROM
\n
"
,
MAJOR_NR
);
return
-
EIO
;
return
-
EIO
;
}
}
if
(
check_region
(
mcd_port
,
4
))
{
if
(
!
request_region
(
mcd_port
,
4
,
"mcd"
))
{
cleanup
(
1
);
cleanup
(
1
);
printk
(
KERN_ERR
"mcd: Initialization failed, I/O port (%X) already in use
\n
"
,
mcd_port
);
printk
(
KERN_ERR
"mcd: Initialization failed, I/O port (%X) already in use
\n
"
,
mcd_port
);
return
-
EIO
;
return
-
EIO
;
...
@@ -1092,7 +1092,7 @@ int __init mcd_init(void)
...
@@ -1092,7 +1092,7 @@ int __init mcd_init(void)
if
(
count
>=
2000000
)
{
if
(
count
>=
2000000
)
{
printk
(
KERN_INFO
"mcd: initialisation failed - No mcd device at 0x%x irq %d
\n
"
,
printk
(
KERN_INFO
"mcd: initialisation failed - No mcd device at 0x%x irq %d
\n
"
,
mcd_port
,
mcd_irq
);
mcd_port
,
mcd_irq
);
cleanup
(
1
);
cleanup
(
2
);
return
-
EIO
;
return
-
EIO
;
}
}
count
=
inb
(
MCDPORT
(
0
));
/* pick up the status */
count
=
inb
(
MCDPORT
(
0
));
/* pick up the status */
...
@@ -1102,12 +1102,12 @@ int __init mcd_init(void)
...
@@ -1102,12 +1102,12 @@ int __init mcd_init(void)
if
(
getValue
(
result
+
count
))
{
if
(
getValue
(
result
+
count
))
{
printk
(
KERN_ERR
"mcd: mitsumi get version failed at 0x%x
\n
"
,
printk
(
KERN_ERR
"mcd: mitsumi get version failed at 0x%x
\n
"
,
mcd_port
);
mcd_port
);
cleanup
(
1
);
cleanup
(
2
);
return
-
EIO
;
return
-
EIO
;
}
}
if
(
result
[
0
]
==
result
[
1
]
&&
result
[
1
]
==
result
[
2
])
{
if
(
result
[
0
]
==
result
[
1
]
&&
result
[
1
]
==
result
[
2
])
{
cleanup
(
1
);
cleanup
(
2
);
return
-
EIO
;
return
-
EIO
;
}
}
...
@@ -1120,7 +1120,7 @@ int __init mcd_init(void)
...
@@ -1120,7 +1120,7 @@ int __init mcd_init(void)
if
(
request_irq
(
mcd_irq
,
mcd_interrupt
,
SA_INTERRUPT
,
"Mitsumi CD"
,
NULL
))
{
if
(
request_irq
(
mcd_irq
,
mcd_interrupt
,
SA_INTERRUPT
,
"Mitsumi CD"
,
NULL
))
{
printk
(
KERN_ERR
"mcd: Unable to get IRQ%d for Mitsumi CD-ROM
\n
"
,
mcd_irq
);
printk
(
KERN_ERR
"mcd: Unable to get IRQ%d for Mitsumi CD-ROM
\n
"
,
mcd_irq
);
cleanup
(
1
);
cleanup
(
2
);
return
-
EIO
;
return
-
EIO
;
}
}
...
@@ -1134,8 +1134,6 @@ int __init mcd_init(void)
...
@@ -1134,8 +1134,6 @@ int __init mcd_init(void)
" irq=%d
\n
"
,
mcd_info
.
speed
==
1
?
"Single"
:
"Double"
,
" irq=%d
\n
"
,
mcd_info
.
speed
==
1
?
"Single"
:
"Double"
,
mcd_port
,
mcd_irq
);
mcd_port
,
mcd_irq
);
request_region
(
mcd_port
,
4
,
"mcd"
);
outb
(
MCMD_CONFIG_DRIVE
,
MCDPORT
(
0
));
outb
(
MCMD_CONFIG_DRIVE
,
MCDPORT
(
0
));
outb
(
0x02
,
MCDPORT
(
0
));
outb
(
0x02
,
MCDPORT
(
0
));
outb
(
0x00
,
MCDPORT
(
0
));
outb
(
0x00
,
MCDPORT
(
0
));
...
...
drivers/cdrom/mcdx.c
View file @
079f066a
...
@@ -1105,7 +1105,8 @@ int __init mcdx_init_drive(int drive)
...
@@ -1105,7 +1105,8 @@ int __init mcdx_init_drive(int drive)
init_waitqueue_head
(
&
stuffp
->
sleepq
);
init_waitqueue_head
(
&
stuffp
->
sleepq
);
/* check if i/o addresses are available */
/* check if i/o addresses are available */
if
(
check_region
((
unsigned
int
)
stuffp
->
wreg_data
,
MCDX_IO_SIZE
))
{
if
(
!
request_region
((
unsigned
int
)
stuffp
->
wreg_data
,
MCDX_IO_SIZE
,
"mcdx"
))
{
xwarn
(
"0x%3p,%d: Init failed. "
xwarn
(
"0x%3p,%d: Init failed. "
"I/O ports (0x%3p..0x%3p) already in use.
\n
"
,
"I/O ports (0x%3p..0x%3p) already in use.
\n
"
,
stuffp
->
wreg_data
,
stuffp
->
irq
,
stuffp
->
wreg_data
,
stuffp
->
irq
,
...
@@ -1125,6 +1126,8 @@ int __init mcdx_init_drive(int drive)
...
@@ -1125,6 +1126,8 @@ int __init mcdx_init_drive(int drive)
xtrace
(
INIT
,
"init() get version
\n
"
);
xtrace
(
INIT
,
"init() get version
\n
"
);
if
(
-
1
==
mcdx_requestversion
(
stuffp
,
&
version
,
4
))
{
if
(
-
1
==
mcdx_requestversion
(
stuffp
,
&
version
,
4
))
{
/* failed, next drive */
/* failed, next drive */
release_region
((
unsigned
long
)
stuffp
->
wreg_data
,
MCDX_IO_SIZE
);
xwarn
(
"%s=0x%3p,%d: Init failed. Can't get version.
\n
"
,
xwarn
(
"%s=0x%3p,%d: Init failed. Can't get version.
\n
"
,
MCDX
,
stuffp
->
wreg_data
,
stuffp
->
irq
);
MCDX
,
stuffp
->
wreg_data
,
stuffp
->
irq
);
xtrace
(
MALLOC
,
"init() free stuffp @ %p
\n
"
,
stuffp
);
xtrace
(
MALLOC
,
"init() free stuffp @ %p
\n
"
,
stuffp
);
...
@@ -1154,6 +1157,8 @@ int __init mcdx_init_drive(int drive)
...
@@ -1154,6 +1157,8 @@ int __init mcdx_init_drive(int drive)
stuffp
->
playcmd
=
READ1X
;
stuffp
->
playcmd
=
READ1X
;
if
(
!
stuffp
->
present
)
{
if
(
!
stuffp
->
present
)
{
release_region
((
unsigned
long
)
stuffp
->
wreg_data
,
MCDX_IO_SIZE
);
xwarn
(
"%s=0x%3p,%d: Init failed. No Mitsumi CD-ROM?.
\n
"
,
xwarn
(
"%s=0x%3p,%d: Init failed. No Mitsumi CD-ROM?.
\n
"
,
MCDX
,
stuffp
->
wreg_data
,
stuffp
->
irq
);
MCDX
,
stuffp
->
wreg_data
,
stuffp
->
irq
);
kfree
(
stuffp
);
kfree
(
stuffp
);
...
@@ -1162,6 +1167,8 @@ int __init mcdx_init_drive(int drive)
...
@@ -1162,6 +1167,8 @@ int __init mcdx_init_drive(int drive)
xtrace
(
INIT
,
"init() register blkdev
\n
"
);
xtrace
(
INIT
,
"init() register blkdev
\n
"
);
if
(
devfs_register_blkdev
(
MAJOR_NR
,
"mcdx"
,
&
mcdx_bdops
)
!=
0
)
{
if
(
devfs_register_blkdev
(
MAJOR_NR
,
"mcdx"
,
&
mcdx_bdops
)
!=
0
)
{
release_region
((
unsigned
long
)
stuffp
->
wreg_data
,
MCDX_IO_SIZE
);
xwarn
(
"%s=0x%3p,%d: Init failed. Can't get major %d.
\n
"
,
xwarn
(
"%s=0x%3p,%d: Init failed. Can't get major %d.
\n
"
,
MCDX
,
stuffp
->
wreg_data
,
stuffp
->
irq
,
MAJOR_NR
);
MCDX
,
stuffp
->
wreg_data
,
stuffp
->
irq
,
MAJOR_NR
);
kfree
(
stuffp
);
kfree
(
stuffp
);
...
@@ -1174,6 +1181,8 @@ int __init mcdx_init_drive(int drive)
...
@@ -1174,6 +1181,8 @@ int __init mcdx_init_drive(int drive)
xtrace
(
INIT
,
"init() subscribe irq and i/o
\n
"
);
xtrace
(
INIT
,
"init() subscribe irq and i/o
\n
"
);
mcdx_irq_map
[
stuffp
->
irq
]
=
stuffp
;
mcdx_irq_map
[
stuffp
->
irq
]
=
stuffp
;
if
(
request_irq
(
stuffp
->
irq
,
mcdx_intr
,
SA_INTERRUPT
,
"mcdx"
,
NULL
))
{
if
(
request_irq
(
stuffp
->
irq
,
mcdx_intr
,
SA_INTERRUPT
,
"mcdx"
,
NULL
))
{
release_region
((
unsigned
long
)
stuffp
->
wreg_data
,
MCDX_IO_SIZE
);
xwarn
(
"%s=0x%3p,%d: Init failed. Can't get irq (%d).
\n
"
,
xwarn
(
"%s=0x%3p,%d: Init failed. Can't get irq (%d).
\n
"
,
MCDX
,
stuffp
->
wreg_data
,
stuffp
->
irq
,
stuffp
->
irq
);
MCDX
,
stuffp
->
wreg_data
,
stuffp
->
irq
,
stuffp
->
irq
);
stuffp
->
irq
=
0
;
stuffp
->
irq
=
0
;
...
@@ -1181,8 +1190,6 @@ int __init mcdx_init_drive(int drive)
...
@@ -1181,8 +1190,6 @@ int __init mcdx_init_drive(int drive)
kfree
(
stuffp
);
kfree
(
stuffp
);
return
0
;
return
0
;
}
}
request_region
((
unsigned
int
)
stuffp
->
wreg_data
,
MCDX_IO_SIZE
,
"mcdx"
);
xtrace
(
INIT
,
"init() get garbage
\n
"
);
xtrace
(
INIT
,
"init() get garbage
\n
"
);
{
{
...
...
drivers/cdrom/optcd.c
View file @
079f066a
...
@@ -2008,7 +2008,7 @@ int __init optcd_init(void)
...
@@ -2008,7 +2008,7 @@ int __init optcd_init(void)
"optcd: no Optics Storage CDROM Initialization
\n
"
);
"optcd: no Optics Storage CDROM Initialization
\n
"
);
return
-
EIO
;
return
-
EIO
;
}
}
if
(
check_region
(
optcd_port
,
4
))
{
if
(
!
request_region
(
optcd_port
,
4
,
"optcd"
))
{
printk
(
KERN_ERR
"optcd: conflict, I/O port 0x%x already used
\n
"
,
printk
(
KERN_ERR
"optcd: conflict, I/O port 0x%x already used
\n
"
,
optcd_port
);
optcd_port
);
return
-
EIO
;
return
-
EIO
;
...
@@ -2016,21 +2016,25 @@ int __init optcd_init(void)
...
@@ -2016,21 +2016,25 @@ int __init optcd_init(void)
if
(
!
reset_drive
())
{
if
(
!
reset_drive
())
{
printk
(
KERN_ERR
"optcd: drive at 0x%x not ready
\n
"
,
optcd_port
);
printk
(
KERN_ERR
"optcd: drive at 0x%x not ready
\n
"
,
optcd_port
);
release_region
(
optcd_port
,
4
);
return
-
EIO
;
return
-
EIO
;
}
}
if
(
!
version_ok
())
{
if
(
!
version_ok
())
{
printk
(
KERN_ERR
"optcd: unknown drive detected; aborting
\n
"
);
printk
(
KERN_ERR
"optcd: unknown drive detected; aborting
\n
"
);
release_region
(
optcd_port
,
4
);
return
-
EIO
;
return
-
EIO
;
}
}
status
=
exec_cmd
(
COMINITDOUBLE
);
status
=
exec_cmd
(
COMINITDOUBLE
);
if
(
status
<
0
)
{
if
(
status
<
0
)
{
printk
(
KERN_ERR
"optcd: cannot init double speed mode
\n
"
);
printk
(
KERN_ERR
"optcd: cannot init double speed mode
\n
"
);
release_region
(
optcd_port
,
4
);
DEBUG
((
DEBUG_VFS
,
"exec_cmd COMINITDOUBLE: %02x"
,
-
status
));
DEBUG
((
DEBUG_VFS
,
"exec_cmd COMINITDOUBLE: %02x"
,
-
status
));
return
-
EIO
;
return
-
EIO
;
}
}
if
(
devfs_register_blkdev
(
MAJOR_NR
,
"optcd"
,
&
opt_fops
)
!=
0
)
if
(
devfs_register_blkdev
(
MAJOR_NR
,
"optcd"
,
&
opt_fops
)
!=
0
)
{
{
printk
(
KERN_ERR
"optcd: unable to get major %d
\n
"
,
MAJOR_NR
);
printk
(
KERN_ERR
"optcd: unable to get major %d
\n
"
,
MAJOR_NR
);
release_region
(
optcd_port
,
4
);
return
-
EIO
;
return
-
EIO
;
}
}
devfs_register
(
NULL
,
"optcd"
,
DEVFS_FL_DEFAULT
,
MAJOR_NR
,
0
,
devfs_register
(
NULL
,
"optcd"
,
DEVFS_FL_DEFAULT
,
MAJOR_NR
,
0
,
...
@@ -2038,7 +2042,6 @@ int __init optcd_init(void)
...
@@ -2038,7 +2042,6 @@ int __init optcd_init(void)
blk_init_queue
(
BLK_DEFAULT_QUEUE
(
MAJOR_NR
),
do_optcd_request
,
blk_init_queue
(
BLK_DEFAULT_QUEUE
(
MAJOR_NR
),
do_optcd_request
,
&
optcd_lock
);
&
optcd_lock
);
blk_queue_hardsect_size
(
BLK_DEFAULT_QUEUE
(
MAJOR_NR
),
2048
);
blk_queue_hardsect_size
(
BLK_DEFAULT_QUEUE
(
MAJOR_NR
),
2048
);
request_region
(
optcd_port
,
4
,
"optcd"
);
register_disk
(
NULL
,
mk_kdev
(
MAJOR_NR
,
0
),
1
,
&
opt_fops
,
0
);
register_disk
(
NULL
,
mk_kdev
(
MAJOR_NR
,
0
),
1
,
&
opt_fops
,
0
);
printk
(
KERN_INFO
"optcd: DOLPHIN 8000 AT CDROM at 0x%x
\n
"
,
optcd_port
);
printk
(
KERN_INFO
"optcd: DOLPHIN 8000 AT CDROM at 0x%x
\n
"
,
optcd_port
);
...
...
drivers/char/isicom.c
View file @
079f066a
...
@@ -1254,7 +1254,11 @@ static int isicom_write(struct tty_struct * tty, int from_user,
...
@@ -1254,7 +1254,11 @@ static int isicom_write(struct tty_struct * tty, int from_user,
created more space in xmit_buf when the ctrl
created more space in xmit_buf when the ctrl
gets back here */
gets back here */
sti
();
sti
();
copy_from_user
(
tmp_buf
,
buf
,
cnt
);
if
(
copy_from_user
(
tmp_buf
,
buf
,
cnt
))
{
up
(
&
tmp_buf_sem
);
restore_flags
(
flags
);
return
-
EFAULT
;
}
cli
();
cli
();
cnt
=
MIN
(
cnt
,
MIN
(
SERIAL_XMIT_SIZE
-
port
->
xmit_cnt
-
1
,
cnt
=
MIN
(
cnt
,
MIN
(
SERIAL_XMIT_SIZE
-
port
->
xmit_cnt
-
1
,
SERIAL_XMIT_SIZE
-
port
->
xmit_head
));
SERIAL_XMIT_SIZE
-
port
->
xmit_head
));
...
...
drivers/char/istallion.c
View file @
079f066a
...
@@ -712,7 +712,7 @@ static void stli_mkasyport(stliport_t *portp, asyport_t *pp, struct termios *tio
...
@@ -712,7 +712,7 @@ static void stli_mkasyport(stliport_t *portp, asyport_t *pp, struct termios *tio
static
void
stli_mkasysigs
(
asysigs_t
*
sp
,
int
dtr
,
int
rts
);
static
void
stli_mkasysigs
(
asysigs_t
*
sp
,
int
dtr
,
int
rts
);
static
long
stli_mktiocm
(
unsigned
long
sigvalue
);
static
long
stli_mktiocm
(
unsigned
long
sigvalue
);
static
void
stli_read
(
stlibrd_t
*
brdp
,
stliport_t
*
portp
);
static
void
stli_read
(
stlibrd_t
*
brdp
,
stliport_t
*
portp
);
static
void
stli_getserial
(
stliport_t
*
portp
,
struct
serial_struct
*
sp
);
static
int
stli_getserial
(
stliport_t
*
portp
,
struct
serial_struct
*
sp
);
static
int
stli_setserial
(
stliport_t
*
portp
,
struct
serial_struct
*
sp
);
static
int
stli_setserial
(
stliport_t
*
portp
,
struct
serial_struct
*
sp
);
static
int
stli_getbrdstats
(
combrd_t
*
bp
);
static
int
stli_getbrdstats
(
combrd_t
*
bp
);
static
int
stli_getportstats
(
stliport_t
*
portp
,
comstats_t
*
cp
);
static
int
stli_getportstats
(
stliport_t
*
portp
,
comstats_t
*
cp
);
...
@@ -1676,7 +1676,8 @@ static int stli_write(struct tty_struct *tty, int from_user, const unsigned char
...
@@ -1676,7 +1676,8 @@ static int stli_write(struct tty_struct *tty, int from_user, const unsigned char
restore_flags
(
flags
);
restore_flags
(
flags
);
down
(
&
stli_tmpwritesem
);
down
(
&
stli_tmpwritesem
);
copy_from_user
(
stli_tmpwritebuf
,
chbuf
,
count
);
if
(
copy_from_user
(
stli_tmpwritebuf
,
chbuf
,
count
))
return
-
EFAULT
;
chbuf
=
&
stli_tmpwritebuf
[
0
];
chbuf
=
&
stli_tmpwritebuf
[
0
];
}
}
...
@@ -1977,7 +1978,7 @@ static int stli_charsinbuffer(struct tty_struct *tty)
...
@@ -1977,7 +1978,7 @@ static int stli_charsinbuffer(struct tty_struct *tty)
* Generate the serial struct info.
* Generate the serial struct info.
*/
*/
static
void
stli_getserial
(
stliport_t
*
portp
,
struct
serial_struct
*
sp
)
static
int
stli_getserial
(
stliport_t
*
portp
,
struct
serial_struct
*
sp
)
{
{
struct
serial_struct
sio
;
struct
serial_struct
sio
;
stlibrd_t
*
brdp
;
stlibrd_t
*
brdp
;
...
@@ -2002,7 +2003,8 @@ static void stli_getserial(stliport_t *portp, struct serial_struct *sp)
...
@@ -2002,7 +2003,8 @@ static void stli_getserial(stliport_t *portp, struct serial_struct *sp)
if
(
brdp
!=
(
stlibrd_t
*
)
NULL
)
if
(
brdp
!=
(
stlibrd_t
*
)
NULL
)
sio
.
port
=
brdp
->
iobase
;
sio
.
port
=
brdp
->
iobase
;
copy_to_user
(
sp
,
&
sio
,
sizeof
(
struct
serial_struct
));
return
copy_to_user
(
sp
,
&
sio
,
sizeof
(
struct
serial_struct
))
?
-
EFAULT
:
0
;
}
}
/*****************************************************************************/
/*****************************************************************************/
...
@@ -2129,7 +2131,7 @@ static int stli_ioctl(struct tty_struct *tty, struct file *file, unsigned int cm
...
@@ -2129,7 +2131,7 @@ static int stli_ioctl(struct tty_struct *tty, struct file *file, unsigned int cm
case
TIOCGSERIAL
:
case
TIOCGSERIAL
:
if
((
rc
=
verify_area
(
VERIFY_WRITE
,
(
void
*
)
arg
,
if
((
rc
=
verify_area
(
VERIFY_WRITE
,
(
void
*
)
arg
,
sizeof
(
struct
serial_struct
)))
==
0
)
sizeof
(
struct
serial_struct
)))
==
0
)
stli_getserial
(
portp
,
(
struct
serial_struct
*
)
arg
);
rc
=
stli_getserial
(
portp
,
(
struct
serial_struct
*
)
arg
);
break
;
break
;
case
TIOCSSERIAL
:
case
TIOCSSERIAL
:
if
((
rc
=
verify_area
(
VERIFY_READ
,
(
void
*
)
arg
,
if
((
rc
=
verify_area
(
VERIFY_READ
,
(
void
*
)
arg
,
...
@@ -3972,7 +3974,7 @@ static inline int stli_initecp(stlibrd_t *brdp)
...
@@ -3972,7 +3974,7 @@ static inline int stli_initecp(stlibrd_t *brdp)
printk
(
KERN_DEBUG
"stli_initecp(brdp=%x)
\n
"
,
(
int
)
brdp
);
printk
(
KERN_DEBUG
"stli_initecp(brdp=%x)
\n
"
,
(
int
)
brdp
);
#endif
#endif
if
(
!
request_region
(
brdp
->
iobase
,
brdp
->
iosize
,
name
))
if
(
!
request_region
(
brdp
->
iobase
,
brdp
->
iosize
,
"istallion"
))
return
-
EIO
;
return
-
EIO
;
if
((
brdp
->
iobase
==
0
)
||
(
brdp
->
memaddr
==
0
))
if
((
brdp
->
iobase
==
0
)
||
(
brdp
->
memaddr
==
0
))
...
@@ -4140,7 +4142,7 @@ static inline int stli_initonb(stlibrd_t *brdp)
...
@@ -4140,7 +4142,7 @@ static inline int stli_initonb(stlibrd_t *brdp)
brdp
->
iosize
=
ONB_IOSIZE
;
brdp
->
iosize
=
ONB_IOSIZE
;
if
(
!
request_region
(
brdp
->
iobase
,
brdp
->
iosize
,
name
))
if
(
!
request_region
(
brdp
->
iobase
,
brdp
->
iosize
,
"istallion"
))
return
-
EIO
;
return
-
EIO
;
/*
/*
...
...
drivers/char/stallion.c
View file @
079f066a
...
@@ -521,7 +521,7 @@ static int stl_readproc(char *page, char **start, off_t off, int count, int *eof
...
@@ -521,7 +521,7 @@ static int stl_readproc(char *page, char **start, off_t off, int count, int *eof
static
int
stl_brdinit
(
stlbrd_t
*
brdp
);
static
int
stl_brdinit
(
stlbrd_t
*
brdp
);
static
int
stl_initports
(
stlbrd_t
*
brdp
,
stlpanel_t
*
panelp
);
static
int
stl_initports
(
stlbrd_t
*
brdp
,
stlpanel_t
*
panelp
);
static
int
stl_mapirq
(
int
irq
,
char
*
name
);
static
int
stl_mapirq
(
int
irq
,
char
*
name
);
static
void
stl_getserial
(
stlport_t
*
portp
,
struct
serial_struct
*
sp
);
static
int
stl_getserial
(
stlport_t
*
portp
,
struct
serial_struct
*
sp
);
static
int
stl_setserial
(
stlport_t
*
portp
,
struct
serial_struct
*
sp
);
static
int
stl_setserial
(
stlport_t
*
portp
,
struct
serial_struct
*
sp
);
static
int
stl_getbrdstats
(
combrd_t
*
bp
);
static
int
stl_getbrdstats
(
combrd_t
*
bp
);
static
int
stl_getportstats
(
stlport_t
*
portp
,
comstats_t
*
cp
);
static
int
stl_getportstats
(
stlport_t
*
portp
,
comstats_t
*
cp
);
...
@@ -1332,7 +1332,8 @@ static int stl_write(struct tty_struct *tty, int from_user, const unsigned char
...
@@ -1332,7 +1332,8 @@ static int stl_write(struct tty_struct *tty, int from_user, const unsigned char
count
=
MIN
(
len
,
count
);
count
=
MIN
(
len
,
count
);
down
(
&
stl_tmpwritesem
);
down
(
&
stl_tmpwritesem
);
copy_from_user
(
stl_tmpwritebuf
,
chbuf
,
count
);
if
(
copy_from_user
(
stl_tmpwritebuf
,
chbuf
,
count
))
return
-
EFAULT
;
chbuf
=
&
stl_tmpwritebuf
[
0
];
chbuf
=
&
stl_tmpwritebuf
[
0
];
}
}
...
@@ -1504,7 +1505,7 @@ static int stl_charsinbuffer(struct tty_struct *tty)
...
@@ -1504,7 +1505,7 @@ static int stl_charsinbuffer(struct tty_struct *tty)
* Generate the serial struct info.
* Generate the serial struct info.
*/
*/
static
void
stl_getserial
(
stlport_t
*
portp
,
struct
serial_struct
*
sp
)
static
int
stl_getserial
(
stlport_t
*
portp
,
struct
serial_struct
*
sp
)
{
{
struct
serial_struct
sio
;
struct
serial_struct
sio
;
stlbrd_t
*
brdp
;
stlbrd_t
*
brdp
;
...
@@ -1534,7 +1535,7 @@ static void stl_getserial(stlport_t *portp, struct serial_struct *sp)
...
@@ -1534,7 +1535,7 @@ static void stl_getserial(stlport_t *portp, struct serial_struct *sp)
if
(
brdp
!=
(
stlbrd_t
*
)
NULL
)
if
(
brdp
!=
(
stlbrd_t
*
)
NULL
)
sio
.
irq
=
brdp
->
irq
;
sio
.
irq
=
brdp
->
irq
;
copy_to_user
(
sp
,
&
sio
,
sizeof
(
struct
serial_struct
))
;
return
copy_to_user
(
sp
,
&
sio
,
sizeof
(
struct
serial_struct
))
?
-
EFAULT
:
0
;
}
}
/*****************************************************************************/
/*****************************************************************************/
...
@@ -1648,7 +1649,7 @@ static int stl_ioctl(struct tty_struct *tty, struct file *file, unsigned int cmd
...
@@ -1648,7 +1649,7 @@ static int stl_ioctl(struct tty_struct *tty, struct file *file, unsigned int cmd
case
TIOCGSERIAL
:
case
TIOCGSERIAL
:
if
((
rc
=
verify_area
(
VERIFY_WRITE
,
(
void
*
)
arg
,
if
((
rc
=
verify_area
(
VERIFY_WRITE
,
(
void
*
)
arg
,
sizeof
(
struct
serial_struct
)))
==
0
)
sizeof
(
struct
serial_struct
)))
==
0
)
stl_getserial
(
portp
,
(
struct
serial_struct
*
)
arg
);
rc
=
stl_getserial
(
portp
,
(
struct
serial_struct
*
)
arg
);
break
;
break
;
case
TIOCSSERIAL
:
case
TIOCSSERIAL
:
if
((
rc
=
verify_area
(
VERIFY_READ
,
(
void
*
)
arg
,
if
((
rc
=
verify_area
(
VERIFY_READ
,
(
void
*
)
arg
,
...
...
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