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
60bd3b5e
Commit
60bd3b5e
authored
Nov 30, 2002
by
Oliver Neukum
Committed by
Greg Kroah-Hartman
Nov 30, 2002
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[PATCH] - cleanup for new module primitives
parent
24dd2623
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
19 additions
and
27 deletions
+19
-27
drivers/usb/core/devio.c
drivers/usb/core/devio.c
+7
-9
drivers/usb/core/usb.c
drivers/usb/core/usb.c
+12
-18
No files found.
drivers/usb/core/devio.c
View file @
60bd3b5e
...
...
@@ -1122,16 +1122,14 @@ static int proc_ioctl (struct dev_state *ps, void *arg)
unlock_kernel
();
retval
=
-
ENOSYS
;
}
else
{
if
(
driver
->
owner
&&
!
try_inc_mod_count
(
driver
->
owner
))
{
if
(
!
try_module_get
(
driver
->
owner
))
{
unlock_kernel
();
retval
=
-
ENOSYS
;
break
;
}
unlock_kernel
();
retval
=
driver
->
ioctl
(
ifp
,
ctrl
.
ioctl_code
,
buf
);
if
(
driver
->
owner
)
__MOD_DEC_USE_COUNT
(
driver
->
owner
);
put_module
(
driver
->
owner
);
}
if
(
retval
==
-
ENOIOCTLCMD
)
...
...
drivers/usb/core/usb.c
View file @
60bd3b5e
...
...
@@ -70,6 +70,7 @@ static struct device_driver usb_generic_driver = {
.
remove
=
generic_remove
,
};
/* needs to be called with BKL held */
int
usb_device_probe
(
struct
device
*
dev
)
{
struct
usb_interface
*
intf
=
to_usb_interface
(
dev
);
...
...
@@ -83,11 +84,8 @@ int usb_device_probe(struct device *dev)
if
(
!
driver
->
probe
)
return
error
;
if
(
driver
->
owner
)
{
m
=
try_inc_mod_count
(
driver
->
owner
);
if
(
m
==
0
)
if
(
!
try_module_get
(
driver
->
owner
))
return
error
;
}
id
=
usb_match_id
(
intf
,
driver
->
id_table
);
if
(
id
)
{
...
...
@@ -99,8 +97,7 @@ int usb_device_probe(struct device *dev)
if
(
!
error
)
intf
->
driver
=
driver
;
if
(
driver
->
owner
)
__MOD_DEC_USE_COUNT
(
driver
->
owner
);
put_module
(
driver
->
owner
);
return
error
;
}
...
...
@@ -120,15 +117,13 @@ int usb_device_remove(struct device *dev)
return
-
ENODEV
;
}
if
(
driver
->
owner
)
{
m
=
try_inc_mod_count
(
driver
->
owner
);
m
=
try_module_get
(
driver
->
owner
);
if
(
m
==
0
)
{
// FIXME this happens even when we just rmmod
// drivers that aren't in active use...
err
(
"Dieing driver still bound to device.
\n
"
);
return
-
EIO
;
}
}
/* if we sleep here on an umanaged driver
* the holder of the lock guards against
...
...
@@ -143,8 +138,7 @@ int usb_device_remove(struct device *dev)
usb_driver_release_interface
(
driver
,
intf
);
up
(
&
driver
->
serialize
);
if
(
driver
->
owner
)
__MOD_DEC_USE_COUNT
(
driver
->
owner
);
module_put
(
driver
->
owner
)
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