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
9b0f2f7d
Commit
9b0f2f7d
authored
Jan 12, 2003
by
James Simmons
Browse files
Options
Browse Files
Download
Plain Diff
Merge maxwell.earthlink.net:/usr/src/linus-2.5
into maxwell.earthlink.net:/usr/src/fbdev-2.5
parents
ca073490
af1dbde2
Changes
44
Hide whitespace changes
Inline
Side-by-side
Showing
44 changed files
with
257 additions
and
390 deletions
+257
-390
arch/alpha/kernel/module.c
arch/alpha/kernel/module.c
+3
-8
arch/arm/kernel/module.c
arch/arm/kernel/module.c
+0
-5
arch/i386/kernel/module.c
arch/i386/kernel/module.c
+2
-6
arch/ppc/kernel/module.c
arch/ppc/kernel/module.c
+2
-6
arch/s390/kernel/module.c
arch/s390/kernel/module.c
+3
-7
arch/s390x/kernel/module.c
arch/s390x/kernel/module.c
+2
-6
arch/sparc/kernel/module.c
arch/sparc/kernel/module.c
+3
-7
arch/sparc64/kernel/module.c
arch/sparc64/kernel/module.c
+3
-7
arch/v850/kernel/module.c
arch/v850/kernel/module.c
+3
-10
arch/x86_64/kernel/module.c
arch/x86_64/kernel/module.c
+2
-6
drivers/base/bus.c
drivers/base/bus.c
+6
-4
drivers/base/class.c
drivers/base/class.c
+3
-2
drivers/base/core.c
drivers/base/core.c
+3
-2
drivers/base/interface.c
drivers/base/interface.c
+2
-2
drivers/base/node.c
drivers/base/node.c
+16
-18
drivers/isdn/hisax/hisax_fcpcipnp.c
drivers/isdn/hisax/hisax_fcpcipnp.c
+2
-2
drivers/mca/mca-bus.c
drivers/mca/mca-bus.c
+6
-25
drivers/net/aironet4500_card.c
drivers/net/aironet4500_card.c
+1
-4
drivers/net/ne.c
drivers/net/ne.c
+6
-5
drivers/net/smc-ultra.c
drivers/net/smc-ultra.c
+2
-2
drivers/pnp/card.c
drivers/pnp/card.c
+8
-13
drivers/pnp/interface.c
drivers/pnp/interface.c
+2
-2
drivers/pnp/isapnp/core.c
drivers/pnp/isapnp/core.c
+1
-2
drivers/s390/block/dasd.c
drivers/s390/block/dasd.c
+15
-33
drivers/s390/cio/ccwgroup.c
drivers/s390/cio/ccwgroup.c
+3
-10
drivers/s390/cio/chsc.c
drivers/s390/cio/chsc.c
+8
-11
drivers/s390/cio/device.c
drivers/s390/cio/device.c
+15
-18
drivers/s390/net/ctcmain.c
drivers/s390/net/ctcmain.c
+4
-7
drivers/s390/net/lcs.c
drivers/s390/net/lcs.c
+5
-7
drivers/s390/net/netiucv.c
drivers/s390/net/netiucv.c
+32
-38
drivers/scsi/osst.c
drivers/scsi/osst.c
+4
-4
drivers/scsi/scsi_sysfs.c
drivers/scsi/scsi_sysfs.c
+4
-4
drivers/scsi/st.c
drivers/scsi/st.c
+5
-7
fs/nfsd/nfsproc.c
fs/nfsd/nfsproc.c
+1
-1
fs/sysfs/inode.c
fs/sysfs/inode.c
+9
-7
include/linux/device.h
include/linux/device.h
+4
-4
include/linux/elf.h
include/linux/elf.h
+6
-5
include/linux/kobject.h
include/linux/kobject.h
+1
-1
include/linux/moduleloader.h
include/linux/moduleloader.h
+0
-8
include/linux/pnp.h
include/linux/pnp.h
+3
-3
include/linux/sysfs.h
include/linux/sysfs.h
+1
-1
kernel/module.c
kernel/module.c
+34
-47
sound/oss/ad1848.c
sound/oss/ad1848.c
+10
-12
sound/oss/cs4232.c
sound/oss/cs4232.c
+12
-11
No files found.
arch/alpha/kernel/module.c
View file @
9b0f2f7d
...
...
@@ -190,15 +190,10 @@ apply_relocate_add(Elf64_Shdr *sechdrs, const char *strtab,
/* This is where to make the change. */
location
=
base
+
rela
[
i
].
r_offset
;
/* This is the symbol it is referring to. */
/* This is the symbol it is referring to. Note that all
unresolved symbols have been resolved. */
sym
=
symtab
+
r_sym
;
value
=
sym
->
st_value
;
if
(
!
value
)
{
printk
(
KERN_ERR
"module %s: Unknown symbol %s
\n
"
,
me
->
name
,
strtab
+
sym
->
st_name
);
return
-
ENOENT
;
}
value
+=
rela
[
i
].
r_addend
;
value
=
sym
->
st_value
+
rela
[
i
].
r_addend
;
switch
(
r_type
)
{
case
R_ALPHA_NONE
:
...
...
arch/arm/kernel/module.c
View file @
9b0f2f7d
...
...
@@ -98,11 +98,6 @@ apply_relocate(Elf32_Shdr *sechdrs, const char *strtab, unsigned int symindex,
}
sym
=
((
Elf32_Sym
*
)
symsec
->
sh_addr
)
+
offset
;
if
(
!
sym
->
st_value
)
{
printk
(
KERN_WARNING
"%s: unknown symbol %s
\n
"
,
module
->
name
,
strtab
+
sym
->
st_name
);
return
-
ENOENT
;
}
if
(
rel
->
r_offset
<
0
||
rel
->
r_offset
>
dstsec
->
sh_size
-
sizeof
(
u32
))
{
printk
(
KERN_ERR
"%s: out of bounds relocation, "
...
...
arch/i386/kernel/module.c
View file @
9b0f2f7d
...
...
@@ -70,14 +70,10 @@ int apply_relocate(Elf32_Shdr *sechdrs,
/* This is where to make the change */
location
=
(
void
*
)
sechdrs
[
sechdrs
[
relsec
].
sh_info
].
sh_addr
+
rel
[
i
].
r_offset
;
/* This is the symbol it is referring to */
/* This is the symbol it is referring to. Note that all
undefined symbols have been resolved. */
sym
=
(
Elf32_Sym
*
)
sechdrs
[
symindex
].
sh_addr
+
ELF32_R_SYM
(
rel
[
i
].
r_info
);
if
(
!
sym
->
st_value
)
{
printk
(
KERN_WARNING
"%s: Unknown symbol %s
\n
"
,
me
->
name
,
strtab
+
sym
->
st_name
);
return
-
ENOENT
;
}
switch
(
ELF32_R_TYPE
(
rel
[
i
].
r_info
))
{
case
R_386_32
:
...
...
arch/ppc/kernel/module.c
View file @
9b0f2f7d
...
...
@@ -197,14 +197,10 @@ int apply_relocate_add(Elf32_Shdr *sechdrs,
/* This is where to make the change */
location
=
(
void
*
)
sechdrs
[
sechdrs
[
relsec
].
sh_info
].
sh_addr
+
rela
[
i
].
r_offset
;
/* This is the symbol it is referring to */
/* This is the symbol it is referring to. Note that all
undefined symbols have been resolved. */
sym
=
(
Elf32_Sym
*
)
sechdrs
[
symindex
].
sh_addr
+
ELF32_R_SYM
(
rela
[
i
].
r_info
);
if
(
!
sym
->
st_value
)
{
printk
(
KERN_WARNING
"%s: Unknown symbol %s
\n
"
,
module
->
name
,
strtab
+
sym
->
st_name
);
return
-
ENOENT
;
}
/* `Everything is relative'. */
value
=
sym
->
st_value
+
rela
[
i
].
r_addend
;
...
...
arch/s390/kernel/module.c
View file @
9b0f2f7d
/*
* arch/s390
x/kernel/module.c - Kernel module help for s390x
.
* arch/s390
/kernel/module.c - Kernel module help for s390
.
*
* S390 version
* Copyright (C) 2002 IBM Deutschland Entwicklung GmbH, IBM Corporation
...
...
@@ -77,14 +77,10 @@ int apply_relocate(Elf_Shdr *sechdrs,
/* This is where to make the change */
location
=
(
void
*
)
sechdrs
[
sechdrs
[
relsec
].
sh_info
].
sh_addr
+
rel
[
i
].
r_offset
;
/* This is the symbol it is referring to */
/* This is the symbol it is referring to. Note that all
undefined symbols have been resolved. */
sym
=
(
ElfW
(
Sym
)
*
)
sechdrs
[
symindex
].
sh_addr
+
ELFW
(
R_SYM
)(
rel
[
i
].
r_info
);
if
(
!
sym
->
st_value
)
{
printk
(
KERN_WARNING
"%s: Unknown symbol %s
\n
"
,
me
->
name
,
strtab
+
sym
->
st_name
);
return
-
ENOENT
;
}
switch
(
ELF_R_TYPE
(
rel
[
i
].
r_info
))
{
case
R_390_8
:
/* Direct 8 bit. */
...
...
arch/s390x/kernel/module.c
View file @
9b0f2f7d
...
...
@@ -78,14 +78,10 @@ int apply_relocate(Elf_Shdr *sechdrs,
/* This is where to make the change */
location
=
(
void
*
)
sechdrs
[
sechdrs
[
relsec
].
sh_info
].
sh_addr
+
rel
[
i
].
r_offset
;
/* This is the symbol it is referring to */
/* This is the symbol it is referring to. Note that all
undefined symbols have been resolved. */
sym
=
(
ElfW
(
Sym
)
*
)
sechdrs
[
symindex
].
sh_addr
+
ELFW
(
R_SYM
)(
rel
[
i
].
r_info
);
if
(
!
sym
->
st_value
)
{
printk
(
KERN_WARNING
"%s: Unknown symbol %s
\n
"
,
me
->
name
,
strtab
+
sym
->
st_name
);
return
-
ENOENT
;
}
switch
(
ELF_R_TYPE
(
rel
[
i
].
r_info
))
{
case
R_390_8
:
/* Direct 8 bit. */
...
...
arch/sparc/kernel/module.c
View file @
9b0f2f7d
...
...
@@ -75,15 +75,11 @@ int apply_relocate_add(Elf32_Shdr *sechdrs,
location
=
(
u8
*
)
sechdrs
[
sechdrs
[
relsec
].
sh_info
].
sh_addr
+
rel
[
i
].
r_offset
;
loc32
=
(
u32
*
)
location
;
/* This is the symbol it is referring to */
/* This is the symbol it is referring to. Note that all
undefined symbols have been resolved. */
sym
=
(
Elf32_Sym
*
)
sechdrs
[
symindex
].
sh_addr
+
ELF32_R_SYM
(
rel
[
i
].
r_info
);
if
(
!
(
v
=
sym
->
st_value
))
{
printk
(
KERN_WARNING
"%s: Unknown symbol %s
\n
"
,
me
->
name
,
strtab
+
sym
->
st_name
);
return
-
ENOENT
;
}
v
+=
rel
[
i
].
r_addend
;
v
=
sym
->
st_value
+
rel
[
i
].
r_addend
;
switch
(
ELF32_R_TYPE
(
rel
[
i
].
r_info
))
{
case
R_SPARC_32
:
...
...
arch/sparc64/kernel/module.c
View file @
9b0f2f7d
...
...
@@ -185,15 +185,11 @@ int apply_relocate_add(Elf64_Shdr *sechdrs,
BUG_ON
(((
u64
)
location
>>
(
u64
)
32
)
!=
(
u64
)
0
);
/* This is the symbol it is referring to */
/* This is the symbol it is referring to. Note that all
undefined symbols have been resolved. */
sym
=
(
Elf64_Sym
*
)
sechdrs
[
symindex
].
sh_addr
+
ELF64_R_SYM
(
rel
[
i
].
r_info
);
if
(
!
(
v
=
sym
->
st_value
))
{
printk
(
KERN_WARNING
"%s: Unknown symbol %s
\n
"
,
me
->
name
,
strtab
+
sym
->
st_name
);
return
-
ENOENT
;
}
v
+=
rel
[
i
].
r_addend
;
v
=
sym
->
st_value
+
rel
[
i
].
r_addend
;
switch
(
ELF64_R_TYPE
(
rel
[
i
].
r_info
)
&
0xff
)
{
case
R_SPARC_64
:
...
...
arch/v850/kernel/module.c
View file @
9b0f2f7d
...
...
@@ -184,19 +184,12 @@ int apply_relocate_add (Elf32_Shdr *sechdrs, const char *strtab,
uint32_t
*
loc
=
((
void
*
)
sechdrs
[
sechdrs
[
relsec
].
sh_info
].
sh_addr
+
rela
[
i
].
r_offset
);
/* This is the symbol it is referring to */
/* This is the symbol it is referring to. Note that all
undefined symbols have been resolved. */
Elf32_Sym
*
sym
=
((
Elf32_Sym
*
)
sechdrs
[
symindex
].
sh_addr
+
ELF32_R_SYM
(
rela
[
i
].
r_info
));
uint32_t
val
=
sym
->
st_value
;
if
(
!
val
)
{
printk
(
KERN_WARNING
"%s: Unknown symbol %s
\n
"
,
mod
->
name
,
strtab
+
sym
->
st_name
);
return
-
ENOENT
;
}
val
+=
rela
[
i
].
r_addend
;
uint32_t
val
=
sym
->
st_value
+
rela
[
i
].
r_addend
;
switch
(
ELF32_R_TYPE
(
rela
[
i
].
r_info
))
{
case
R_V850_32
:
...
...
arch/x86_64/kernel/module.c
View file @
9b0f2f7d
...
...
@@ -53,14 +53,10 @@ int apply_relocate_add(Elf64_Shdr *sechdrs,
loc
=
(
void
*
)
sechdrs
[
sechdrs
[
relsec
].
sh_info
].
sh_addr
+
rel
[
i
].
r_offset
;
/* This is the symbol it is referring to */
/* This is the symbol it is referring to. Note that all
undefined symbols have been resolved. */
sym
=
(
Elf64_Sym
*
)
sechdrs
[
symindex
].
sh_addr
+
ELF64_R_SYM
(
rel
[
i
].
r_info
);
if
(
!
sym
->
st_value
)
{
printk
(
KERN_WARNING
"%s: Unknown symbol %s
\n
"
,
me
->
name
,
strtab
+
sym
->
st_name
);
return
-
ENOENT
;
}
DEBUGP
(
"type %d st_value %Lx r_addend %Lx loc %Lx
\n
"
,
(
int
)
ELF64_R_TYPE
(
rel
[
i
].
r_info
),
...
...
drivers/base/bus.c
View file @
9b0f2f7d
...
...
@@ -43,14 +43,15 @@ drv_attr_show(struct kobject * kobj, struct attribute * attr, char * buf)
}
static
ssize_t
drv_attr_store
(
struct
kobject
*
kobj
,
struct
attribute
*
attr
,
const
char
*
buf
)
drv_attr_store
(
struct
kobject
*
kobj
,
struct
attribute
*
attr
,
const
char
*
buf
,
size_t
count
)
{
struct
driver_attribute
*
drv_attr
=
to_drv_attr
(
attr
);
struct
device_driver
*
drv
=
to_driver
(
kobj
);
ssize_t
ret
=
0
;
if
(
drv_attr
->
store
)
ret
=
drv_attr
->
store
(
drv
,
buf
);
ret
=
drv_attr
->
store
(
drv
,
buf
,
count
);
return
ret
;
}
...
...
@@ -90,14 +91,15 @@ bus_attr_show(struct kobject * kobj, struct attribute * attr, char * buf)
}
static
ssize_t
bus_attr_store
(
struct
kobject
*
kobj
,
struct
attribute
*
attr
,
const
char
*
buf
)
bus_attr_store
(
struct
kobject
*
kobj
,
struct
attribute
*
attr
,
const
char
*
buf
,
size_t
count
)
{
struct
bus_attribute
*
bus_attr
=
to_bus_attr
(
attr
);
struct
bus_type
*
bus
=
to_bus
(
kobj
);
ssize_t
ret
=
0
;
if
(
bus_attr
->
store
)
ret
=
bus_attr
->
store
(
bus
,
buf
);
ret
=
bus_attr
->
store
(
bus
,
buf
,
count
);
return
ret
;
}
...
...
drivers/base/class.c
View file @
9b0f2f7d
...
...
@@ -26,14 +26,15 @@ devclass_attr_show(struct kobject * kobj, struct attribute * attr, char * buf)
}
static
ssize_t
devclass_attr_store
(
struct
kobject
*
kobj
,
struct
attribute
*
attr
,
const
char
*
buf
)
devclass_attr_store
(
struct
kobject
*
kobj
,
struct
attribute
*
attr
,
const
char
*
buf
,
size_t
count
)
{
struct
devclass_attribute
*
class_attr
=
to_class_attr
(
attr
);
struct
device_class
*
dc
=
to_class
(
kobj
);
ssize_t
ret
=
0
;
if
(
class_attr
->
store
)
ret
=
class_attr
->
store
(
dc
,
buf
);
ret
=
class_attr
->
store
(
dc
,
buf
,
count
);
return
ret
;
}
...
...
drivers/base/core.c
View file @
9b0f2f7d
...
...
@@ -47,14 +47,15 @@ dev_attr_show(struct kobject * kobj, struct attribute * attr, char * buf)
}
static
ssize_t
dev_attr_store
(
struct
kobject
*
kobj
,
struct
attribute
*
attr
,
const
char
*
buf
)
dev_attr_store
(
struct
kobject
*
kobj
,
struct
attribute
*
attr
,
const
char
*
buf
,
size_t
count
)
{
struct
device_attribute
*
dev_attr
=
to_dev_attr
(
attr
);
struct
device
*
dev
=
to_dev
(
kobj
);
ssize_t
ret
=
0
;
if
(
dev_attr
->
store
)
ret
=
dev_attr
->
store
(
dev
,
buf
);
ret
=
dev_attr
->
store
(
dev
,
buf
,
count
);
return
ret
;
}
...
...
drivers/base/interface.c
View file @
9b0f2f7d
...
...
@@ -24,7 +24,7 @@ device_read_power(struct device * dev, char * page)
}
static
ssize_t
device_write_power
(
struct
device
*
dev
,
const
char
*
buf
)
device_write_power
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
)
{
char
str_command
[
20
];
char
str_level
[
20
];
...
...
@@ -80,7 +80,7 @@ device_write_power(struct device * dev, const char * buf)
error
=
0
;
}
done:
return
error
<
0
?
error
:
strlen
(
buf
)
;
return
error
<
0
?
error
:
count
;
}
static
DEVICE_ATTR
(
power
,
S_IWUSR
|
S_IRUGO
,
...
...
drivers/base/node.c
View file @
9b0f2f7d
...
...
@@ -36,29 +36,27 @@ static ssize_t node_read_cpumap(struct device * dev, char * buf, size_t count, l
static
DEVICE_ATTR
(
cpumap
,
S_IRUGO
,
node_read_cpumap
,
NULL
);
#define K(x) ((x) << (PAGE_SHIFT - 10))
static
ssize_t
node_read_meminfo
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
static
ssize_t
node_read_meminfo
(
struct
device
*
dev
,
char
*
buf
)
{
struct
sys_root
*
node
=
to_root
(
dev
);
int
nid
=
node
->
id
;
struct
sysinfo
i
;
si_meminfo_node
(
&
i
,
nid
);
return
off
?
0
:
sprintf
(
buf
,
"
\n
"
"Node %d MemTotal: %8lu kB
\n
"
"Node %d MemFree: %8lu kB
\n
"
"Node %d MemUsed: %8lu kB
\n
"
"Node %d HighTotal: %8lu kB
\n
"
"Node %d HighFree: %8lu kB
\n
"
"Node %d LowTotal: %8lu kB
\n
"
"Node %d LowFree: %8lu kB
\n
"
,
nid
,
K
(
i
.
totalram
),
nid
,
K
(
i
.
freeram
),
nid
,
K
(
i
.
totalram
-
i
.
freeram
),
nid
,
K
(
i
.
totalhigh
),
nid
,
K
(
i
.
freehigh
),
nid
,
K
(
i
.
totalram
-
i
.
totalhigh
),
nid
,
K
(
i
.
freeram
-
i
.
freehigh
));
return
0
;
return
sprintf
(
buf
,
"
\n
"
"Node %d MemTotal: %8lu kB
\n
"
"Node %d MemFree: %8lu kB
\n
"
"Node %d MemUsed: %8lu kB
\n
"
"Node %d HighTotal: %8lu kB
\n
"
"Node %d HighFree: %8lu kB
\n
"
"Node %d LowTotal: %8lu kB
\n
"
"Node %d LowFree: %8lu kB
\n
"
,
nid
,
K
(
i
.
totalram
),
nid
,
K
(
i
.
freeram
),
nid
,
K
(
i
.
totalram
-
i
.
freeram
),
nid
,
K
(
i
.
totalhigh
),
nid
,
K
(
i
.
freehigh
),
nid
,
K
(
i
.
totalram
-
i
.
totalhigh
),
nid
,
K
(
i
.
freeram
-
i
.
freehigh
));
}
#undef K
static
DEVICE_ATTR
(
meminfo
,
S_IRUGO
,
node_read_meminfo
,
NULL
);
...
...
drivers/isdn/hisax/hisax_fcpcipnp.c
View file @
9b0f2f7d
...
...
@@ -63,7 +63,7 @@ static struct pnp_card_id fcpnp_ids[] __devinitdata = {
.
driver_data
=
(
unsigned
long
)
"Fritz!Card PnP"
,
.
devs
=
{
{
"AVM0900"
}
}
}
};
//MODULE_DEVICE_TABLE(pnpc, fcpnp_ids); FIXME
MODULE_DEVICE_TABLE
(
pnp_card
,
fcpnp_ids
);
static
int
protocol
=
2
;
/* EURO-ISDN Default */
MODULE_PARM
(
protocol
,
"i"
);
...
...
@@ -911,7 +911,7 @@ static struct pci_driver fcpci_driver = {
#ifdef __ISAPNP__
static
int
__devinit
fcpnp_probe
(
struct
pnp_card
*
card
,
const
struct
pnp_card_id
*
card_id
)
const
struct
pnp_card_
device_
id
*
card_id
)
{
struct
fritz_adapter
*
adapter
;
struct
pnp_dev
*
pnp_dev
;
...
...
drivers/mca/mca-bus.c
View file @
9b0f2f7d
...
...
@@ -69,47 +69,28 @@ struct bus_type mca_bus_type = {
};
EXPORT_SYMBOL
(
mca_bus_type
);
static
ssize_t
mca_show_pos_id
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
static
ssize_t
mca_show_pos_id
(
struct
device
*
dev
,
char
*
buf
)
{
/* four digits, \n and trailing \0 */
char
mybuf
[
6
];
struct
mca_device
*
mca_dev
=
to_mca_device
(
dev
);
int
len
;
if
(
mca_dev
->
pos_id
<
MCA_DUMMY_POS_START
)
len
=
sprintf
(
my
buf
,
"%04x
\n
"
,
mca_dev
->
pos_id
);
len
=
sprintf
(
buf
,
"%04x
\n
"
,
mca_dev
->
pos_id
);
else
len
=
sprintf
(
mybuf
,
"none
\n
"
);
len
++
;
if
(
len
>
off
)
{
len
=
min
((
size_t
)(
len
-
off
),
count
);
memcpy
(
buf
+
off
,
mybuf
+
off
,
len
);
}
else
{
len
=
0
;
}
len
=
sprintf
(
buf
,
"none
\n
"
);
return
len
;
}
static
ssize_t
mca_show_pos
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
static
ssize_t
mca_show_pos
(
struct
device
*
dev
,
char
*
buf
)
{
/* enough for 8 two byte hex chars plus space and new line */
char
mybuf
[
26
];
int
j
,
len
=
0
;
struct
mca_device
*
mca_dev
=
to_mca_device
(
dev
);
for
(
j
=
0
;
j
<
8
;
j
++
)
len
+=
sprintf
(
my
buf
+
len
,
"%02x "
,
mca_dev
->
pos
[
j
]);
len
+=
sprintf
(
buf
+
len
,
"%02x "
,
mca_dev
->
pos
[
j
]);
/* change last trailing space to new line */
mybuf
[
len
-
1
]
=
'\n'
;
len
++
;
if
(
len
>
off
)
{
len
=
min
((
size_t
)(
len
-
off
),
count
);
memcpy
(
buf
+
off
,
mybuf
+
off
,
len
);
}
else
{
len
=
0
;
}
buf
[
len
-
1
]
=
'\n'
;
return
len
;
}
...
...
drivers/net/aironet4500_card.c
View file @
9b0f2f7d
...
...
@@ -455,10 +455,7 @@ static void awc_pnp_release(void) {
if
(
awc_proc_unset_fun
)
awc_proc_unset_fun
(
i
);
if
(
isapnp_cfg_begin
(
logdev
->
PNP_BUS
->
PNP_BUS_NUMBER
,
logdev
->
PNP_DEV_NUMBER
)
<
0
)
printk
(
"isapnp cfg failed at release
\n
"
);
isapnp_deactivate
(
logdev
->
PNP_DEV_NUMBER
);
isapnp_cfg_end
();
pnp_device_detach
(
logdev
);
release_region
(
aironet4500_devices
[
i
]
->
base_addr
,
AIRONET4X00_IO_SIZE
);
// release_region(isa_cisaddr, AIRONET4X00_CIS_SIZE, "aironet4x00 cis");
...
...
drivers/net/ne.c
View file @
9b0f2f7d
...
...
@@ -206,13 +206,14 @@ static int __init ne_probe_isapnp(struct net_device *dev)
if
(
pnp_device_attach
(
idev
)
<
0
)
continue
;
if
(
pnp_activate_dev
(
idev
,
NULL
)
<
0
)
{
__again:
pnp_device_detach
(
idev
);
continue
;
}
/* if no io and irq, search for next */
if
(
!
pnp_port_valid
(
idev
,
0
)
||
!
pnp_irq_valid
(
idev
,
0
))
goto
__again
;
if
(
!
pnp_port_valid
(
idev
,
0
)
||
!
pnp_irq_valid
(
idev
,
0
))
{
pnp_device_detach
(
idev
);
continue
;
}
/* found it */
dev
->
base_addr
=
pnp_port_start
(
idev
,
0
);
dev
->
irq
=
pnp_irq
(
idev
,
0
);
...
...
@@ -786,9 +787,9 @@ void cleanup_module(void)
struct
net_device
*
dev
=
&
dev_ne
[
this_dev
];
if
(
dev
->
priv
!=
NULL
)
{
void
*
priv
=
dev
->
priv
;
struct
p
ci_dev
*
idev
=
(
struct
pci
_dev
*
)
ei_status
.
priv
;
struct
p
np_dev
*
idev
=
(
struct
pnp
_dev
*
)
ei_status
.
priv
;
if
(
idev
)
idev
->
deactivate
(
idev
);
pnp_device_detach
(
idev
);
free_irq
(
dev
->
irq
,
dev
);
release_region
(
dev
->
base_addr
,
NE_IO_EXTENT
);
unregister_netdev
(
dev
);
...
...
drivers/net/smc-ultra.c
View file @
9b0f2f7d
...
...
@@ -550,9 +550,9 @@ cleanup_module(void)
int
ioaddr
=
dev
->
base_addr
-
ULTRA_NIC_OFFSET
;
#ifdef __ISAPNP__
struct
p
ci_dev
*
idev
=
(
struct
pci
_dev
*
)
ei_status
.
priv
;
struct
p
np_dev
*
idev
=
(
struct
pnp
_dev
*
)
ei_status
.
priv
;
if
(
idev
)
idev
->
deactivate
(
idev
);
pnp_device_detach
(
idev
);
#endif
unregister_netdev
(
dev
);
...
...
drivers/pnp/card.c
View file @
9b0f2f7d
...
...
@@ -22,9 +22,9 @@
LIST_HEAD
(
pnp_cards
);
static
const
struct
pnp_card_id
*
match_card
(
struct
pnpc_driver
*
drv
,
struct
pnp_card
*
card
)
static
const
struct
pnp_card_
device_
id
*
match_card
(
struct
pnpc_driver
*
drv
,
struct
pnp_card
*
card
)
{
const
struct
pnp_card_id
*
drv_id
=
drv
->
id_table
;
const
struct
pnp_card_
device_
id
*
drv_id
=
drv
->
id_table
;
while
(
*
drv_id
->
id
){
if
(
compare_pnp_id
(
card
->
id
,
drv_id
->
id
))
return
drv_id
;
...
...
@@ -216,18 +216,15 @@ struct pnp_dev * pnp_request_card_device(struct pnp_card *card, const char *id,
return
NULL
;
found:
spin_lock
(
&
pnp_lock
);
if
(
dev
->
status
!=
PNP_READY
){
spin_unlock
(
&
pnp_lock
);
if
(
pnp_device_attach
(
dev
)
<
0
)
return
NULL
;
}
dev
->
status
=
PNP_ATTACHED
;
spin_unlock
(
&
pnp_lock
);
cdrv
=
to_pnpc_driver
(
card
->
dev
.
driver
);
if
(
dev
->
active
==
0
)
{
if
(
!
(
cdrv
->
flags
&
PNPC_DRIVER_DO_NOT_ACTIVATE
))
{
if
(
pnp_activate_dev
(
dev
,
NULL
)
<
0
)
if
(
pnp_activate_dev
(
dev
,
NULL
)
<
0
)
{
pnp_device_detach
(
dev
);
return
NULL
;
}
}
}
else
{
if
((
cdrv
->
flags
&
PNPC_DRIVER_DO_NOT_ACTIVATE
))
...
...
@@ -250,10 +247,8 @@ void pnp_release_card_device(struct pnp_dev *dev)
{
spin_lock
(
&
pnp_lock
);
list_del
(
&
dev
->
rdev_list
);
if
(
dev
->
status
==
PNP_ATTACHED
)
dev
->
status
=
PNP_READY
;
spin_unlock
(
&
pnp_lock
);
pnp_d
isable_dev
(
dev
);
pnp_d
evice_detach
(
dev
);
}
static
void
pnpc_recover_devices
(
struct
pnp_card
*
card
)
...
...
@@ -291,7 +286,7 @@ static int pnpc_card_probe(struct device *dev)
int
error
=
0
;
struct
pnpc_driver
*
drv
=
to_pnpc_driver
(
dev
->
driver
);
struct
pnp_card
*
card
=
to_pnp_card
(
dev
);
const
struct
pnp_card_id
*
card_id
=
NULL
;
const
struct
pnp_card_
device_
id
*
card_id
=
NULL
;
pnp_dbg
(
"pnp: match found with the PnP card '%s' and the driver '%s'"
,
dev
->
bus_id
,
drv
->
name
);
...
...
drivers/pnp/interface.c
View file @
9b0f2f7d
...
...
@@ -284,7 +284,7 @@ static ssize_t pnp_show_current_resources(struct device *dmdev, char *buf)
}
static
ssize_t
pnp_set_current_resources
(
struct
device
*
dmdev
,
const
char
*
buf
)
pnp_set_current_resources
(
struct
device
*
dmdev
,
const
char
*
buf
,
size_t
count
)
{
struct
pnp_dev
*
dev
=
to_pnp_dev
(
dmdev
);
char
command
[
20
];
...
...
@@ -326,7 +326,7 @@ pnp_set_current_resources(struct device * dmdev, const char * buf)
goto
done
;
}
done:
return
error
<
0
?
error
:
strlen
(
buf
)
;
return
error
<
0
?
error
:
count
;
}
static
DEVICE_ATTR
(
resources
,
S_IRUGO
|
S_IWUSR
,
...
...
drivers/pnp/isapnp/core.c
View file @
9b0f2f7d
...
...
@@ -102,7 +102,6 @@ static int isapnp_detected;
/* some prototypes */
static
int
isapnp_config_prepare
(
struct
pnp_dev
*
dev
);
extern
struct
pnp_protocol
isapnp_card_protocol
;
extern
struct
pnp_protocol
isapnp_protocol
;
static
inline
void
write_data
(
unsigned
char
x
)
...
...
@@ -1125,7 +1124,7 @@ int __init isapnp_init(void)
isapnp_build_device_list
();
cards
=
0
;
protocol_for_each_card
(
&
isapnp_
card_
protocol
,
card
)
{
protocol_for_each_card
(
&
isapnp_protocol
,
card
)
{
cards
++
;
if
(
isapnp_verbose
)
{
printk
(
KERN_INFO
"isapnp: Card '%s'
\n
"
,
card
->
name
[
0
]
?
card
->
name
:
"Unknown"
);
...
...
drivers/s390/block/dasd.c
View file @
9b0f2f7d
...
...
@@ -1949,28 +1949,22 @@ dasd_generic_set_offline (struct ccw_device *cdev)
* readonly controls the readonly status of a dasd
*/
static
ssize_t
dasd_ro_show
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
dasd_ro_show
(
struct
device
*
dev
,
char
*
buf
)
{
dasd_device_t
*
device
;
if
(
off
)
return
0
;
device
=
dev
->
driver_data
;
if
(
!
device
)
return
snprintf
(
buf
,
count
,
"n/a
\n
"
);
return
snprintf
(
buf
,
PAGE_SIZE
,
"n/a
\n
"
);
return
snprintf
(
buf
,
count
,
device
->
ro_flag
?
"1
\n
"
:
"0
\n
"
);
return
snprintf
(
buf
,
PAGE_SIZE
,
device
->
ro_flag
?
"1
\n
"
:
"0
\n
"
);
}
static
ssize_t
dasd_ro_store
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
,
loff_t
off
)
dasd_ro_store
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
)
{
dasd_device_t
*
device
=
dev
->
driver_data
;
if
(
off
)
return
0
;
if
(
device
)
device
->
ro_flag
=
(
buf
[
0
]
==
'1'
)
?
1
:
0
;
return
count
;
...
...
@@ -1984,29 +1978,22 @@ static DEVICE_ATTR(readonly, 0644, dasd_ro_show, dasd_ro_store);
*/
/* TODO: Implement */
static
ssize_t
dasd_use_diag_show
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
dasd_use_diag_show
(
struct
device
*
dev
,
char
*
buf
)
{
dasd_device_t
*
device
;
if
(
off
)
return
0
;
device
=
dev
->
driver_data
;
if
(
!
device
)
return
s
nprintf
(
buf
,
count
,
"n/a
\n
"
);
return
s
printf
(
buf
,
"n/a
\n
"
);
return
s
nprintf
(
buf
,
count
,
device
->
use_diag_flag
?
"1
\n
"
:
"0
\n
"
);
return
s
printf
(
buf
,
device
->
use_diag_flag
?
"1
\n
"
:
"0
\n
"
);
}
static
ssize_t
dasd_use_diag_store
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
,
loff_t
off
)
dasd_use_diag_store
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
)
{
dasd_device_t
*
device
=
dev
->
driver_data
;
if
(
off
)
return
0
;
if
(
device
)
device
->
use_diag_flag
=
(
buf
[
0
]
==
'1'
)
?
1
:
0
;
return
count
;
...
...
@@ -2020,43 +2007,38 @@ DEVICE_ATTR(use_diag, 0644, dasd_use_diag_show, dasd_use_diag_store);
* an inaccaptable interface */
/* TODO: Split this up into smaller files! */
static ssize_t
dasd_devices_show(struct device *dev, char *buf
, size_t count, loff_t off
)
dasd_devices_show(struct device *dev, char *buf)
{
dasd_device_t *device;
dasd_devmap_t *devmap;
if (off) /* ignore partial write */
return 0;
devmap = NULL;
device = dev->driver_data;
if (device)
devmap = dasd_devmap_from_devno(device->devno);
if (!devmap)
return s
nprintf(buf, count
, "unused\n");
return s
printf(buf
, "unused\n");
return min ((size_t) dasd_devices_print(devmap, buf),
count
);
return min ((size_t) dasd_devices_print(devmap, buf),
PAGE_SIZE
);
}
static DEVICE_ATTR(dasd, 0444, dasd_devices_show, 0);
#endif
static
ssize_t
dasd_discipline_show
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
dasd_discipline_show
(
struct
device
*
dev
,
char
*
buf
)
{
dasd_device_t
*
device
;
if
(
off
)
return
0
;
device
=
dev
->
driver_data
;
if
(
!
device
||
!
device
->
discipline
)
return
s
nprintf
(
buf
,
count
,
"none
\n
"
);
return
snprintf
(
buf
,
count
,
"%s
\n
"
,
device
->
discipline
->
name
);
return
s
printf
(
buf
,
"none
\n
"
);
return
snprintf
(
buf
,
PAGE_SIZE
,
"%s
\n
"
,
device
->
discipline
->
name
);
}
static
DEVICE_ATTR
(
discipline
,
0444
,
dasd_discipline_show
,
0
);
static
DEVICE_ATTR
(
discipline
,
0444
,
dasd_discipline_show
,
NULL
);
static
int
dasd_add_sysfs_files
(
struct
ccw_device
*
cdev
)
...
...
drivers/s390/cio/ccwgroup.c
View file @
9b0f2f7d
...
...
@@ -185,15 +185,11 @@ ccwgroup_set_offline(struct ccwgroup_device *gdev)
}
static
ssize_t
ccwgroup_online_store
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
,
loff_t
off
)
ccwgroup_online_store
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
)
{
struct
ccwgroup_device
*
gdev
;
unsigned
int
value
;
if
(
off
)
return
0
;
gdev
=
to_ccwgroupdev
(
dev
);
if
(
!
dev
->
driver
)
return
count
;
...
...
@@ -209,16 +205,13 @@ ccwgroup_online_store (struct device *dev, const char *buf, size_t count,
}
static
ssize_t
ccwgroup_online_show
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
ccwgroup_online_show
(
struct
device
*
dev
,
char
*
buf
)
{
int
online
;
if
(
off
)
return
0
;
online
=
(
to_ccwgroupdev
(
dev
)
->
state
==
CCWGROUP_ONLINE
);
return
s
nprintf
(
buf
,
count
,
online
?
"1
\n
"
:
"0
\n
"
);
return
s
printf
(
buf
,
online
?
"1
\n
"
:
"0
\n
"
);
}
static
DEVICE_ATTR
(
online
,
0644
,
ccwgroup_online_show
,
ccwgroup_online_store
);
...
...
drivers/s390/cio/chsc.c
View file @
9b0f2f7d
...
...
@@ -606,30 +606,30 @@ s390_vary_chpid( __u8 chpid, int on)
* Files for the channel path entries.
*/
static
ssize_t
chp_status_show
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
chp_status_show
(
struct
device
*
dev
,
char
*
buf
)
{
struct
sys_device
*
sdev
=
container_of
(
dev
,
struct
sys_device
,
dev
);
struct
channel_path
*
chp
=
container_of
(
sdev
,
struct
channel_path
,
sdev
);
if
(
!
chp
)
return
off
?
0
:
count
;
return
0
;
switch
(
chp
->
state
)
{
case
CHP_OFFLINE
:
return
off
?
0
:
snprintf
(
buf
,
count
,
"n/a
\n
"
);
return
snprintf
(
buf
,
count
,
"n/a
\n
"
);
case
CHP_LOGICALLY_OFFLINE
:
return
off
?
0
:
snprintf
(
buf
,
count
,
"logically offline
\n
"
);
return
snprintf
(
buf
,
count
,
"logically offline
\n
"
);
case
CHP_STANDBY
:
return
off
?
0
:
snprintf
(
buf
,
count
,
"n/a
\n
"
);
return
snprintf
(
buf
,
count
,
"n/a
\n
"
);
case
CHP_ONLINE
:
return
off
?
0
:
snprintf
(
buf
,
count
,
"online
\n
"
);
return
snprintf
(
buf
,
count
,
"online
\n
"
);
default:
return
off
?
0
:
count
;
return
0
;
}
}
static
ssize_t
chp_status_write
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
,
loff_t
off
)
chp_status_write
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
)
{
struct
sys_device
*
sdev
=
container_of
(
dev
,
struct
sys_device
,
dev
);
struct
channel_path
*
cp
=
container_of
(
sdev
,
struct
channel_path
,
sdev
);
...
...
@@ -637,9 +637,6 @@ chp_status_write(struct device *dev, const char *buf, size_t count, loff_t off)
int
num_args
;
int
error
;
if
(
off
)
return
0
;
num_args
=
sscanf
(
buf
,
"%5s"
,
cmd
);
if
(
!
num_args
)
return
count
;
...
...
drivers/s390/cio/device.c
View file @
9b0f2f7d
...
...
@@ -157,7 +157,7 @@ module_exit(cleanup_ccw_bus_type);
* TODO: Split chpids and pimpampom up? Where is "in use" in the tree?
*/
static
ssize_t
chpids_show
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
chpids_show
(
struct
device
*
dev
,
char
*
buf
)
{
struct
subchannel
*
sch
=
to_subchannel
(
dev
);
struct
ssd_info
*
ssd
=
&
sch
->
ssd_info
;
...
...
@@ -168,48 +168,48 @@ chpids_show (struct device * dev, char * buf, size_t count, loff_t off)
ret
+=
sprintf
(
buf
+
ret
,
"%02x "
,
ssd
->
chpid
[
chp
]);
ret
+=
sprintf
(
buf
+
ret
,
"
\n
"
);
return
off
?
0
:
min
((
ssize_t
)
count
,
ret
);
return
min
((
ssize_t
)
PAGE_SIZE
,
ret
);
}
static
ssize_t
pimpampom_show
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
pimpampom_show
(
struct
device
*
dev
,
char
*
buf
)
{
struct
subchannel
*
sch
=
to_subchannel
(
dev
);
struct
pmcw
*
pmcw
=
&
sch
->
schib
.
pmcw
;
return
off
?
0
:
snprintf
(
buf
,
count
,
"%02x %02x %02x
\n
"
,
pmcw
->
pim
,
pmcw
->
pam
,
pmcw
->
pom
);
return
sprintf
(
buf
,
"%02x %02x %02x
\n
"
,
pmcw
->
pim
,
pmcw
->
pam
,
pmcw
->
pom
);
}
static
ssize_t
devtype_show
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
devtype_show
(
struct
device
*
dev
,
char
*
buf
)
{
struct
ccw_device
*
cdev
=
to_ccwdev
(
dev
);
struct
ccw_device_id
*
id
=
&
(
cdev
->
id
);
if
(
id
->
dev_type
!=
0
)
return
off
?
0
:
snprintf
(
buf
,
count
,
"%04x/%02x
\n
"
,
id
->
dev_type
,
id
->
dev_model
);
return
sprintf
(
buf
,
"%04x/%02x
\n
"
,
id
->
dev_type
,
id
->
dev_model
);
else
return
off
?
0
:
snprintf
(
buf
,
count
,
"n/a
\n
"
);
return
sprintf
(
buf
,
"n/a
\n
"
);
}
static
ssize_t
cutype_show
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
cutype_show
(
struct
device
*
dev
,
char
*
buf
)
{
struct
ccw_device
*
cdev
=
to_ccwdev
(
dev
);
struct
ccw_device_id
*
id
=
&
(
cdev
->
id
);
return
off
?
0
:
snprintf
(
buf
,
count
,
"%04x/%02x
\n
"
,
id
->
cu_type
,
id
->
cu_model
);
return
sprintf
(
buf
,
"%04x/%02x
\n
"
,
id
->
cu_type
,
id
->
cu_model
);
}
static
ssize_t
online_show
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
online_show
(
struct
device
*
dev
,
char
*
buf
)
{
struct
ccw_device
*
cdev
=
to_ccwdev
(
dev
);
return
off
?
0
:
snprintf
(
buf
,
count
,
cdev
->
online
?
"yes
\n
"
:
"no
\n
"
);
return
sprintf
(
buf
,
cdev
->
online
?
"yes
\n
"
:
"no
\n
"
);
}
void
...
...
@@ -256,14 +256,11 @@ ccw_device_set_online(struct ccw_device *cdev)
}
static
ssize_t
online_store
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
,
loff_t
off
)
online_store
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
)
{
struct
ccw_device
*
cdev
=
to_ccwdev
(
dev
);
unsigned
int
value
;
if
(
off
)
return
0
;
if
(
!
cdev
->
drv
)
return
count
;
...
...
drivers/s390/net/ctcmain.c
View file @
9b0f2f7d
...
...
@@ -2512,27 +2512,24 @@ ctc_stats(struct net_device * dev)
#define CTRL_BUFSIZE 40
static
ssize_t
buffer_show
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
buffer_show
(
struct
device
*
dev
,
char
*
buf
)
{
struct
ctc_priv
*
priv
;
priv
=
dev
->
driver_data
;
if
(
!
priv
)
return
-
ENODEV
;
return
off
?
0
:
snprintf
(
buf
,
count
,
"%d
\n
"
,
priv
->
channel
[
READ
]
->
max_bufsize
);
return
sprintf
(
buf
,
"%d
\n
"
,
priv
->
channel
[
READ
]
->
max_bufsize
);
}
static
ssize_t
buffer_write
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
,
loff_t
off
)
buffer_write
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
)
{
struct
ctc_priv
*
priv
;
struct
net_device
*
ndev
;
int
bs1
;
if
(
off
)
return
0
;
priv
=
dev
->
driver_data
;
if
(
!
priv
)
return
-
ENODEV
;
...
...
drivers/s390/net/lcs.c
View file @
9b0f2f7d
...
...
@@ -1637,32 +1637,30 @@ lcs_open_device(struct net_device *dev)
* show function for portno called by cat or similar things
*/
static
ssize_t
lcs_portno_show
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
lcs_portno_show
(
struct
device
*
dev
,
char
*
buf
)
{
struct
lcs_card
*
card
;
card
=
(
struct
lcs_card
*
)
dev
->
driver_data
;
if
(
off
||
!
card
)
if
(
!
card
)
return
0
;
return
s
nprintf
(
buf
,
count
,
"%d
\n
"
,
card
->
portno
);
return
s
printf
(
buf
,
"%d
\n
"
,
card
->
portno
);
}
/**
* store the value which is piped to file portno
*/
static
ssize_t
lcs_portno_store
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
,
loff_t
off
)
lcs_portno_store
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
)
{
struct
lcs_card
*
card
;
int
value
;
card
=
(
struct
lcs_card
*
)
dev
->
driver_data
;
if
(
off
||
!
card
)
if
(
!
card
)
return
0
;
sscanf
(
buf
,
"%u"
,
&
value
);
...
...
drivers/s390/net/netiucv.c
View file @
9b0f2f7d
...
...
@@ -1259,16 +1259,16 @@ netiucv_change_mtu (net_device * dev, int new_mtu)
#define CTRL_BUFSIZE 40
static
ssize_t
user_show
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
user_show
(
struct
device
*
dev
,
char
*
buf
)
{
netiucv_priv
*
priv
=
dev
->
driver_data
;
return
off
?
0
:
snprintf
(
buf
,
count
,
"%s
\n
"
,
netiucv_printname
(
priv
->
conn
->
userid
));
return
snprintf
(
buf
,
PAGE_SIZE
,
"%s
\n
"
,
netiucv_printname
(
priv
->
conn
->
userid
));
}
static
ssize_t
user_write
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
,
loff_t
off
)
user_write
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
)
{
netiucv_priv
*
priv
=
dev
->
driver_data
;
struct
net_device
*
ndev
=
container_of
((
void
*
)
priv
,
struct
net_device
,
priv
);
...
...
@@ -1305,16 +1305,16 @@ user_write (struct device *dev, const char *buf, size_t count, loff_t off)
static
DEVICE_ATTR
(
user
,
0644
,
user_show
,
user_write
);
static
ssize_t
buffer_show
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
buffer_show
(
struct
device
*
dev
,
char
*
buf
)
{
netiucv_priv
*
priv
=
dev
->
driver_data
;
return
off
?
0
:
snprintf
(
buf
,
count
,
"%d
\n
"
,
priv
->
conn
->
max_buffsize
);
return
sprintf
(
buf
,
"%d
\n
"
,
priv
->
conn
->
max_buffsize
);
}
static
ssize_t
buffer_write
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
,
loff_t
off
)
buffer_write
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
)
{
netiucv_priv
*
priv
=
dev
->
driver_data
;
struct
net_device
*
ndev
=
container_of
((
void
*
)
priv
,
struct
net_device
,
priv
);
...
...
@@ -1352,38 +1352,37 @@ buffer_write (struct device *dev, const char *buf, size_t count, loff_t off)
static
DEVICE_ATTR
(
buffer
,
0644
,
buffer_show
,
buffer_write
);
static
ssize_t
dev_fsm_show
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
dev_fsm_show
(
struct
device
*
dev
,
char
*
buf
)
{
netiucv_priv
*
priv
=
dev
->
driver_data
;
return
off
?
0
:
snprintf
(
buf
,
count
,
"%s
\n
"
,
fsm_getstate_str
(
priv
->
fsm
));
return
snprintf
(
buf
,
PAGE_SIZE
,
"%s
\n
"
,
fsm_getstate_str
(
priv
->
fsm
));
}
static
DEVICE_ATTR
(
device_fsm_state
,
0444
,
dev_fsm_show
,
NULL
);
static
ssize_t
conn_fsm_show
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
conn_fsm_show
(
struct
device
*
dev
,
char
*
buf
)
{
netiucv_priv
*
priv
=
dev
->
driver_data
;
return
off
?
0
:
snprintf
(
buf
,
count
,
"%s
\n
"
,
fsm_getstate_str
(
priv
->
conn
->
fsm
));
return
snprintf
(
buf
,
PAGE_SIZE
,
"%s
\n
"
,
fsm_getstate_str
(
priv
->
conn
->
fsm
));
}
static
DEVICE_ATTR
(
connection_fsm_state
,
0444
,
conn_fsm_show
,
NULL
);
static
ssize_t
maxmulti_show
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
maxmulti_show
(
struct
device
*
dev
,
char
*
buf
)
{
netiucv_priv
*
priv
=
dev
->
driver_data
;
return
off
?
0
:
snprintf
(
buf
,
count
,
"%ld
\n
"
,
priv
->
conn
->
prof
.
maxmulti
);
return
sprintf
(
buf
,
"%ld
\n
"
,
priv
->
conn
->
prof
.
maxmulti
);
}
static
ssize_t
maxmulti_write
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
,
loff_t
off
)
maxmulti_write
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
)
{
netiucv_priv
*
priv
=
dev
->
driver_data
;
...
...
@@ -1394,16 +1393,15 @@ maxmulti_write (struct device *dev, const char *buf, size_t count, loff_t off)
static
DEVICE_ATTR
(
max_tx_buffer_used
,
0644
,
maxmulti_show
,
maxmulti_write
);
static
ssize_t
maxcq_show
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
maxcq_show
(
struct
device
*
dev
,
char
*
buf
)
{
netiucv_priv
*
priv
=
dev
->
driver_data
;
return
off
?
0
:
snprintf
(
buf
,
count
,
"%ld
\n
"
,
priv
->
conn
->
prof
.
maxcqueue
);
return
sprintf
(
buf
,
"%ld
\n
"
,
priv
->
conn
->
prof
.
maxcqueue
);
}
static
ssize_t
maxcq_write
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
,
loff_t
off
)
maxcq_write
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
)
{
netiucv_priv
*
priv
=
dev
->
driver_data
;
...
...
@@ -1414,16 +1412,15 @@ maxcq_write (struct device *dev, const char *buf, size_t count, loff_t off)
static
DEVICE_ATTR
(
max_chained_skbs
,
0644
,
maxcq_show
,
maxcq_write
);
static
ssize_t
sdoio_show
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
sdoio_show
(
struct
device
*
dev
,
char
*
buf
)
{
netiucv_priv
*
priv
=
dev
->
driver_data
;
return
off
?
0
:
snprintf
(
buf
,
count
,
"%ld
\n
"
,
priv
->
conn
->
prof
.
doios_single
);
return
sprintf
(
buf
,
"%ld
\n
"
,
priv
->
conn
->
prof
.
doios_single
);
}
static
ssize_t
sdoio_write
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
,
loff_t
off
)
sdoio_write
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
)
{
netiucv_priv
*
priv
=
dev
->
driver_data
;
...
...
@@ -1434,16 +1431,15 @@ sdoio_write (struct device *dev, const char *buf, size_t count, loff_t off)
static
DEVICE_ATTR
(
tx_single_write_ops
,
0644
,
sdoio_show
,
sdoio_write
);
static
ssize_t
mdoio_show
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
mdoio_show
(
struct
device
*
dev
,
char
*
buf
)
{
netiucv_priv
*
priv
=
dev
->
driver_data
;
return
off
?
0
:
snprintf
(
buf
,
count
,
"%ld
\n
"
,
priv
->
conn
->
prof
.
doios_multi
);
return
sprintf
(
buf
,
"%ld
\n
"
,
priv
->
conn
->
prof
.
doios_multi
);
}
static
ssize_t
mdoio_write
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
,
loff_t
off
)
mdoio_write
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
)
{
netiucv_priv
*
priv
=
dev
->
driver_data
;
...
...
@@ -1454,16 +1450,15 @@ mdoio_write (struct device *dev, const char *buf, size_t count, loff_t off)
static
DEVICE_ATTR
(
tx_multi_write_ops
,
0644
,
mdoio_show
,
mdoio_write
);
static
ssize_t
txlen_show
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
txlen_show
(
struct
device
*
dev
,
char
*
buf
)
{
netiucv_priv
*
priv
=
dev
->
driver_data
;
return
off
?
0
:
snprintf
(
buf
,
count
,
"%ld
\n
"
,
priv
->
conn
->
prof
.
txlen
);
return
sprintf
(
buf
,
"%ld
\n
"
,
priv
->
conn
->
prof
.
txlen
);
}
static
ssize_t
txlen_write
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
,
loff_t
off
)
txlen_write
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
)
{
netiucv_priv
*
priv
=
dev
->
driver_data
;
...
...
@@ -1474,16 +1469,15 @@ txlen_write (struct device *dev, const char *buf, size_t count, loff_t off)
static
DEVICE_ATTR
(
netto_bytes
,
0644
,
txlen_show
,
txlen_write
);
static
ssize_t
txtime_show
(
struct
device
*
dev
,
char
*
buf
,
size_t
count
,
loff_t
off
)
txtime_show
(
struct
device
*
dev
,
char
*
buf
)
{
netiucv_priv
*
priv
=
dev
->
driver_data
;
return
off
?
0
:
snprintf
(
buf
,
count
,
"%ld
\n
"
,
priv
->
conn
->
prof
.
tx_time
);
return
snprintf
(
buf
,
count
,
"%ld
\n
"
,
priv
->
conn
->
prof
.
tx_time
);
}
static
ssize_t
txtime_write
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
,
loff_t
off
)
txtime_write
(
struct
device
*
dev
,
const
char
*
buf
)
{
netiucv_priv
*
priv
=
dev
->
driver_data
;
...
...
drivers/scsi/osst.c
View file @
9b0f2f7d
...
...
@@ -5325,17 +5325,17 @@ __setup("osst=", osst_setup);
#endif
/* Driverfs file support */
static
ssize_t
osst_device_kdev_read
(
struct
device
*
driverfs_dev
,
char
*
page
,
size_t
count
,
loff_t
off
)
static
ssize_t
osst_device_kdev_read
(
struct
device
*
driverfs_dev
,
char
*
page
)
{
kdev_t
kdev
;
kdev
.
value
=
(
int
)(
long
)
driverfs_dev
->
driver_data
;
return
off
?
0
:
sprintf
(
page
,
"%x
\n
"
,
kdev
.
value
);
return
sprintf
(
page
,
"%x
\n
"
,
kdev
.
value
);
}
static
DEVICE_ATTR
(
kdev
,
S_IRUGO
,
osst_device_kdev_read
,
NULL
);
static
ssize_t
osst_device_type_read
(
struct
device
*
driverfs_dev
,
char
*
page
,
size_t
count
,
loff_t
off
)
static
ssize_t
osst_device_type_read
(
struct
device
*
driverfs_dev
,
char
*
page
)
{
return
off
?
0
:
sprintf
(
page
,
"CHR
\n
"
);
return
sprintf
(
page
,
"CHR
\n
"
);
}
static
DEVICE_ATTR
(
type
,
S_IRUGO
,
osst_device_type_read
,
NULL
);
...
...
drivers/scsi/scsi_sysfs.c
View file @
9b0f2f7d
...
...
@@ -158,12 +158,12 @@ static DEVICE_ATTR(field, S_IRUGO, show_##field, NULL)
show_function(field, format_string) \
\
static ssize_t \
store_##field (struct device *dev, const char *buf
)
\
store_##field (struct device *dev, const char *buf
, size_t count)
\
{ \
struct scsi_device *sdev; \
sdev = to_scsi_device(dev); \
snscanf (buf, 20, format_string, &sdev->field); \
return
strlen(buf);
\
return
count;
\
} \
static DEVICE_ATTR(field, S_IRUGO | S_IWUSR, show_##field, store_##field)
...
...
@@ -175,7 +175,7 @@ static DEVICE_ATTR(field, S_IRUGO | S_IWUSR, show_##field, store_##field)
show_function(field, "%d\n") \
\
static ssize_t \
store_##field (struct device *dev, const char *buf
)
\
store_##field (struct device *dev, const char *buf
, size_t count)
\
{ \
int ret; \
struct scsi_device *sdev; \
...
...
@@ -183,7 +183,7 @@ store_##field (struct device *dev, const char *buf) \
if (ret >= 0) { \
sdev = to_scsi_device(dev); \
sdev->field = ret; \
ret =
strlen(buf);
\
ret =
count;
\
} \
return ret; \
} \
...
...
drivers/scsi/st.c
View file @
9b0f2f7d
...
...
@@ -3615,19 +3615,17 @@ __setup("st=", st_setup);
#endif
/* Driverfs file support */
static
ssize_t
st_device_kdev_read
(
struct
device
*
driverfs_dev
,
char
*
page
,
size_t
count
,
loff_t
off
)
static
ssize_t
st_device_kdev_read
(
struct
device
*
dev
,
char
*
page
)
{
kdev_t
kdev
;
kdev
.
value
=
(
int
)
(
long
)
driverfs_
dev
->
driver_data
;
return
off
?
0
:
sprintf
(
page
,
"%x
\n
"
,
kdev
.
value
);
kdev
.
value
=
(
int
)
dev
->
driver_data
;
return
sprintf
(
page
,
"%x
\n
"
,
kdev
.
value
);
}
static
DEVICE_ATTR
(
kdev
,
S_IRUGO
,
st_device_kdev_read
,
NULL
);
static
ssize_t
st_device_type_read
(
struct
device
*
driverfs_dev
,
char
*
page
,
size_t
count
,
loff_t
off
)
static
ssize_t
st_device_type_read
(
struct
device
*
ev
,
char
*
page
)
{
return
off
?
0
:
sprintf
(
page
,
"CHR
\n
"
);
return
sprintf
(
page
,
"CHR
\n
"
);
}
static
DEVICE_ATTR
(
type
,
S_IRUGO
,
st_device_type_read
,
NULL
);
...
...
fs/nfsd/nfsproc.c
View file @
9b0f2f7d
...
...
@@ -482,7 +482,7 @@ nfsd_proc_readdir(struct svc_rqst *rqstp, struct nfsd_readdirargs *argp,
resp
->
count
=
resp
->
buffer
-
argp
->
buffer
;
if
(
resp
->
offset
)
*
resp
->
offset
=
(
u32
)
offset
;
*
resp
->
offset
=
htonl
(
offset
)
;
fh_put
(
&
argp
->
fh
);
return
nfserr
;
...
...
fs/sysfs/inode.c
View file @
9b0f2f7d
...
...
@@ -167,14 +167,15 @@ subsys_attr_show(struct kobject * kobj, struct attribute * attr, char * page)
}
static
ssize_t
subsys_attr_store
(
struct
kobject
*
kobj
,
struct
attribute
*
attr
,
const
char
*
page
)
subsys_attr_store
(
struct
kobject
*
kobj
,
struct
attribute
*
attr
,
const
char
*
page
,
size_t
count
)
{
struct
subsystem
*
s
=
to_subsys
(
kobj
);
struct
subsys_attribute
*
sattr
=
to_sattr
(
attr
);
ssize_t
ret
=
0
;
if
(
sattr
->
store
)
ret
=
sattr
->
store
(
s
,
page
);
ret
=
sattr
->
store
(
s
,
page
,
count
);
return
ret
;
}
...
...
@@ -247,7 +248,7 @@ static int flush_read_buffer(struct sysfs_buffer * buffer, char * buf,
error
=
copy_to_user
(
buf
,
buffer
->
page
+
*
ppos
,
count
);
if
(
!
error
)
*
ppos
+=
count
;
return
error
?
error
:
count
;
return
error
?
-
EFAULT
:
count
;
}
/**
...
...
@@ -308,7 +309,7 @@ fill_write_buffer(struct sysfs_buffer * buffer, const char * buf, size_t count)
if
(
count
>=
PAGE_SIZE
)
count
=
PAGE_SIZE
-
1
;
error
=
copy_from_user
(
buffer
->
page
,
buf
,
count
);
return
error
?
error
:
count
;
return
error
?
-
EFAULT
:
count
;
}
...
...
@@ -322,13 +323,14 @@ fill_write_buffer(struct sysfs_buffer * buffer, const char * buf, size_t count)
* passing the buffer that we acquired in fill_write_buffer().
*/
static
int
flush_write_buffer
(
struct
file
*
file
,
struct
sysfs_buffer
*
buffer
)
static
int
flush_write_buffer
(
struct
file
*
file
,
struct
sysfs_buffer
*
buffer
,
size_t
count
)
{
struct
attribute
*
attr
=
file
->
f_dentry
->
d_fsdata
;
struct
kobject
*
kobj
=
file
->
f_dentry
->
d_parent
->
d_fsdata
;
struct
sysfs_ops
*
ops
=
buffer
->
ops
;
return
ops
->
store
(
kobj
,
attr
,
buffer
->
page
);
return
ops
->
store
(
kobj
,
attr
,
buffer
->
page
,
count
);
}
...
...
@@ -356,7 +358,7 @@ sysfs_write_file(struct file *file, const char *buf, size_t count, loff_t *ppos)
count
=
fill_write_buffer
(
buffer
,
buf
,
count
);
if
(
count
>
0
)
count
=
flush_write_buffer
(
file
,
buffer
);
count
=
flush_write_buffer
(
file
,
buffer
,
count
);
if
(
count
>
0
)
*
ppos
+=
count
;
return
count
;
...
...
include/linux/device.h
View file @
9b0f2f7d
...
...
@@ -98,7 +98,7 @@ int bus_for_each_drv(struct bus_type * bus, struct device_driver * start,
struct
bus_attribute
{
struct
attribute
attr
;
ssize_t
(
*
show
)(
struct
bus_type
*
,
char
*
buf
);
ssize_t
(
*
store
)(
struct
bus_type
*
,
const
char
*
buf
);
ssize_t
(
*
store
)(
struct
bus_type
*
,
const
char
*
buf
,
size_t
count
);
};
#define BUS_ATTR(_name,_mode,_show,_store) \
...
...
@@ -141,7 +141,7 @@ extern void put_driver(struct device_driver * drv);
struct
driver_attribute
{
struct
attribute
attr
;
ssize_t
(
*
show
)(
struct
device_driver
*
,
char
*
buf
);
ssize_t
(
*
store
)(
struct
device_driver
*
,
const
char
*
buf
);
ssize_t
(
*
store
)(
struct
device_driver
*
,
const
char
*
buf
,
size_t
count
);
};
#define DRIVER_ATTR(_name,_mode,_show,_store) \
...
...
@@ -182,7 +182,7 @@ extern void put_devclass(struct device_class *);
struct
devclass_attribute
{
struct
attribute
attr
;
ssize_t
(
*
show
)(
struct
device_class
*
,
char
*
buf
);
ssize_t
(
*
store
)(
struct
device_class
*
,
const
char
*
buf
);
ssize_t
(
*
store
)(
struct
device_class
*
,
const
char
*
buf
,
size_t
count
);
};
#define DEVCLASS_ATTR(_name,_str,_mode,_show,_store) \
...
...
@@ -320,7 +320,7 @@ extern void device_release_driver(struct device * dev);
struct
device_attribute
{
struct
attribute
attr
;
ssize_t
(
*
show
)(
struct
device
*
dev
,
char
*
buf
);
ssize_t
(
*
store
)(
struct
device
*
dev
,
const
char
*
buf
);
ssize_t
(
*
store
)(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
);
};
#define DEVICE_ATTR(_name,_mode,_show,_store) \
...
...
include/linux/elf.h
View file @
9b0f2f7d
...
...
@@ -156,11 +156,12 @@ typedef __s64 Elf64_Sxword;
#define STT_SECTION 3
#define STT_FILE 4
#define ELF32_ST_BIND(x) ((x) >> 4)
#define ELF32_ST_TYPE(x) (((unsigned int) x) & 0xf)
#define ELF64_ST_BIND(x) ((x) >> 4)
#define ELF64_ST_TYPE(x) (((unsigned int) x) & 0xf)
#define ELF_ST_BIND(x) ((x) >> 4)
#define ELF_ST_TYPE(x) (((unsigned int) x) & 0xf)
#define ELF32_ST_BIND(x) ELF_ST_BIND(x)
#define ELF32_ST_TYPE(x) ELF_ST_TYPE(x)
#define ELF64_ST_BIND(x) ELF_ST_BIND(x)
#define ELF64_ST_TYPE(x) ELF_ST_TYPE(x)
/* Symbolic values for the entries in the auxiliary table
put on the initial stack */
...
...
include/linux/kobject.h
View file @
9b0f2f7d
...
...
@@ -166,7 +166,7 @@ static inline void subsys_put(struct subsystem * s)
struct
subsys_attribute
{
struct
attribute
attr
;
ssize_t
(
*
show
)(
struct
subsystem
*
,
char
*
);
ssize_t
(
*
store
)(
struct
subsystem
*
,
const
char
*
);
ssize_t
(
*
store
)(
struct
subsystem
*
,
const
char
*
,
size_t
);
};
extern
int
subsys_create_file
(
struct
subsystem
*
,
struct
subsys_attribute
*
);
...
...
include/linux/moduleloader.h
View file @
9b0f2f7d
...
...
@@ -5,14 +5,6 @@
#include <linux/module.h>
#include <linux/elf.h>
/* Helper function for arch-specific module loaders */
unsigned
long
find_symbol_internal
(
Elf_Shdr
*
sechdrs
,
unsigned
int
symindex
,
const
char
*
strtab
,
const
char
*
name
,
struct
module
*
mod
,
struct
kernel_symbol_group
**
group
);
/* These must be implemented by the specific architecture */
/* Adjust arch-specific sections. Return 0 on success. */
...
...
include/linux/pnp.h
View file @
9b0f2f7d
...
...
@@ -189,7 +189,7 @@ struct pnp_device_id {
unsigned
long
driver_data
;
/* data private to the driver */
};
struct
pnp_card_id
{
struct
pnp_card_
device_
id
{
char
id
[
7
];
unsigned
long
driver_data
;
/* data private to the driver */
struct
{
...
...
@@ -216,9 +216,9 @@ struct pnp_driver {
struct
pnpc_driver
{
struct
list_head
node
;
char
*
name
;
const
struct
pnp_card_id
*
id_table
;
const
struct
pnp_card_
device_
id
*
id_table
;
unsigned
int
flags
;
int
(
*
probe
)
(
struct
pnp_card
*
card
,
const
struct
pnp_card_id
*
card_id
);
int
(
*
probe
)
(
struct
pnp_card
*
card
,
const
struct
pnp_card_
device_
id
*
card_id
);
void
(
*
remove
)
(
struct
pnp_card
*
card
);
struct
device_driver
driver
;
};
...
...
include/linux/sysfs.h
View file @
9b0f2f7d
...
...
@@ -18,7 +18,7 @@ struct attribute {
struct
sysfs_ops
{
ssize_t
(
*
show
)(
struct
kobject
*
,
struct
attribute
*
,
char
*
);
ssize_t
(
*
store
)(
struct
kobject
*
,
struct
attribute
*
,
const
char
*
);
ssize_t
(
*
store
)(
struct
kobject
*
,
struct
attribute
*
,
const
char
*
,
size_t
);
};
extern
int
...
...
kernel/module.c
View file @
9b0f2f7d
...
...
@@ -722,28 +722,22 @@ static int obsolete_params(const char *name,
}
#endif
/* CONFIG_OBSOLETE_MODPARM */
/* Find an symbol for this module (ie. resolve internals first).
It we find one, record usage. Must be holding module_mutex. */
unsigned
long
find_symbol_internal
(
Elf_Shdr
*
sechdrs
,
unsigned
int
symindex
,
const
char
*
strtab
,
const
char
*
name
,
struct
module
*
mod
,
struct
kernel_symbol_group
**
ksg
)
/* Resolve a symbol for this module. I.e. if we find one, record usage.
Must be holding module_mutex. */
static
unsigned
long
resolve_symbol
(
Elf_Shdr
*
sechdrs
,
unsigned
int
symindex
,
const
char
*
strtab
,
const
char
*
name
,
struct
module
*
mod
)
{
struct
kernel_symbol_group
*
ksg
;
unsigned
long
ret
;
ret
=
find_local_symbol
(
sechdrs
,
symindex
,
strtab
,
name
);
if
(
ret
)
{
*
ksg
=
NULL
;
return
ret
;
}
/* Look in other modules... */
spin_lock_irq
(
&
modlist_lock
);
ret
=
__find_symbol
(
name
,
ksg
,
mod
->
license_gplok
);
ret
=
__find_symbol
(
name
,
&
ksg
,
mod
->
license_gplok
);
if
(
ret
)
{
/* This can fail due to OOM, or module unloading */
if
(
!
use_module
(
mod
,
(
*
ksg
)
->
owner
))
if
(
!
use_module
(
mod
,
ksg
->
owner
))
ret
=
0
;
}
spin_unlock_irq
(
&
modlist_lock
);
...
...
@@ -832,21 +826,19 @@ static int simplify_symbols(Elf_Shdr *sechdrs,
unsigned
int
strindex
,
struct
module
*
mod
)
{
unsigned
int
i
;
Elf_Sym
*
sym
;
/* First simplify defined symbols, so if they become the
"answer" to undefined symbols, copying their st_value us
correct. */
for
(
sym
=
(
void
*
)
sechdrs
[
symindex
].
sh_addr
,
i
=
0
;
i
<
sechdrs
[
symindex
].
sh_size
/
sizeof
(
Elf_Sym
);
i
++
)
{
Elf_Sym
*
sym
=
(
void
*
)
sechdrs
[
symindex
].
sh_addr
;
const
char
*
strtab
=
(
char
*
)
sechdrs
[
strindex
].
sh_addr
;
unsigned
int
i
,
n
=
sechdrs
[
symindex
].
sh_size
/
sizeof
(
Elf_Sym
);
int
ret
=
0
;
for
(
i
=
1
;
i
<
n
;
i
++
)
{
switch
(
sym
[
i
].
st_shndx
)
{
case
SHN_COMMON
:
/* We compiled with -fno-common. These are not
supposed to happen. */
DEBUGP
(
"Common symbol: %s
\n
"
,
strtab
+
sym
[
i
].
st_name
);
return
-
ENOEXEC
;
ret
=
-
ENOEXEC
;
break
;
case
SHN_ABS
:
/* Don't need to do anything */
...
...
@@ -855,6 +847,20 @@ static int simplify_symbols(Elf_Shdr *sechdrs,
break
;
case
SHN_UNDEF
:
sym
[
i
].
st_value
=
resolve_symbol
(
sechdrs
,
symindex
,
strtab
,
strtab
+
sym
[
i
].
st_name
,
mod
);
/* Ok if resolved. */
if
(
sym
[
i
].
st_value
!=
0
)
break
;
/* Ok if weak. */
if
(
ELF_ST_BIND
(
sym
[
i
].
st_info
)
==
STB_WEAK
)
break
;
printk
(
KERN_WARNING
"%s: Unknown symbol %s
\n
"
,
mod
->
name
,
strtab
+
sym
[
i
].
st_name
);
ret
=
-
ENOENT
;
break
;
default:
...
...
@@ -862,30 +868,11 @@ static int simplify_symbols(Elf_Shdr *sechdrs,
=
(
unsigned
long
)
(
sechdrs
[
sym
[
i
].
st_shndx
].
sh_addr
+
sym
[
i
].
st_value
);
break
;
}
}
/* Now try to resolve undefined symbols */
for
(
sym
=
(
void
*
)
sechdrs
[
symindex
].
sh_addr
,
i
=
0
;
i
<
sechdrs
[
symindex
].
sh_size
/
sizeof
(
Elf_Sym
);
i
++
)
{
if
(
sym
[
i
].
st_shndx
==
SHN_UNDEF
)
{
/* Look for symbol */
struct
kernel_symbol_group
*
ksg
=
NULL
;
const
char
*
strtab
=
(
char
*
)
sechdrs
[
strindex
].
sh_addr
;
sym
[
i
].
st_value
=
find_symbol_internal
(
sechdrs
,
symindex
,
strtab
,
strtab
+
sym
[
i
].
st_name
,
mod
,
&
ksg
);
}
}
return
0
;
return
ret
;
}
/* Update size with this section: return offset. */
...
...
sound/oss/ad1848.c
View file @
9b0f2f7d
...
...
@@ -2983,14 +2983,14 @@ static struct pnp_dev *activate_dev(char *devname, char *resname, struct pnp_dev
{
int
err
;
/* Device already active? Let's use it */
if
(
dev
->
active
)
return
(
dev
);
err
=
pnp_device_attach
(
dev
);
if
(
err
<
0
)
return
(
NULL
);
if
((
err
=
pnp_activate_dev
(
dev
,
NULL
))
<
0
)
{
printk
(
KERN_ERR
"ad1848: %s %s config failed (out of resources?)[%d]
\n
"
,
devname
,
resname
,
err
);
pnp_d
isable_dev
(
dev
);
pnp_d
evice_detach
(
dev
);
return
(
NULL
);
}
...
...
@@ -3006,12 +3006,11 @@ static struct pnp_dev *ad1848_init_generic(struct pnp_card *bus, struct address_
{
if
((
ad1848_dev
=
activate_dev
(
ad1848_isapnp_list
[
slot
].
name
,
"ad1848"
,
ad1848_dev
)))
{
get_device
(
&
ad1848_dev
->
dev
);
hw_config
->
io_base
=
ad1848_dev
->
resource
[
ad1848_isapnp_list
[
slot
].
mss_io
].
start
;
hw_config
->
irq
=
ad1848_dev
->
irq_resource
[
ad1848_isapnp_list
[
slot
].
irq
].
start
;
hw_config
->
dma
=
ad1848_dev
->
dma_resource
[
ad1848_isapnp_list
[
slot
].
dma
].
start
;
hw_config
->
io_base
=
pnp_port_start
(
ad1848_dev
,
ad1848_isapnp_list
[
slot
].
mss_io
);
hw_config
->
irq
=
pnp_irq
(
ad1848_dev
,
ad1848_isapnp_list
[
slot
].
irq
);
hw_config
->
dma
=
pnp_dma
(
ad1848_dev
,
ad1848_isapnp_list
[
slot
].
dma
);
if
(
ad1848_isapnp_list
[
slot
].
dma2
!=
-
1
)
hw_config
->
dma2
=
ad1848_dev
->
dma_resource
[
ad1848_isapnp_list
[
slot
].
dma2
].
start
;
hw_config
->
dma2
=
pnp_dma
(
ad1848_dev
,
ad1848_isapnp_list
[
slot
].
dma2
)
;
else
hw_config
->
dma2
=
-
1
;
hw_config
->
card_subtype
=
ad1848_isapnp_list
[
slot
].
type
;
...
...
@@ -3032,7 +3031,7 @@ static int __init ad1848_isapnp_init(struct address_info *hw_config, struct pnp_
if
(
ad1848_init_generic
(
bus
,
hw_config
,
slot
))
{
/* We got it. */
printk
(
KERN_NOTICE
"ad1848:
ISA
PnP reports '%s' at i/o %#x, irq %d, dma %d, %d
\n
"
,
printk
(
KERN_NOTICE
"ad1848: PnP reports '%s' at i/o %#x, irq %d, dma %d, %d
\n
"
,
busname
,
hw_config
->
io_base
,
hw_config
->
irq
,
hw_config
->
dma
,
hw_config
->
dma2
);
...
...
@@ -3122,8 +3121,7 @@ static void __exit cleanup_ad1848(void)
#ifdef CONFIG_PNP
if
(
ad1848_dev
){
if
(
audio_activated
)
pnp_disable_dev
(
ad1848_dev
);
put_device
(
&
ad1848_dev
->
dev
);
pnp_device_detach
(
ad1848_dev
);
}
#endif
}
...
...
sound/oss/cs4232.c
View file @
9b0f2f7d
...
...
@@ -357,7 +357,7 @@ MODULE_PARM_DESC(isapnp,"Enable ISAPnP probing (default 1)");
/* All cs4232 based cards have the main ad1848 card either as CSC0000 or
* CSC0100. */
static
const
struct
pnp_id
cs4232_pnp_table
[]
=
{
static
const
struct
pnp_
device_
id
cs4232_pnp_table
[]
=
{
{
.
id
=
"CSC0100"
,
.
driver_data
=
0
},
{
.
id
=
"CSC0000"
,
.
driver_data
=
0
},
/* Guillemot Turtlebeach something appears to be cs4232 compatible
...
...
@@ -366,9 +366,9 @@ static const struct pnp_id cs4232_pnp_table[] = {
{
.
id
=
""
}
};
/*MODULE_DEVICE_TABLE(isapnp, isapnp_cs4232_list);*/
MODULE_DEVICE_TABLE
(
pnp
,
cs4232_pnp_table
);
static
int
cs4232_pnp_probe
(
struct
pnp_dev
*
dev
,
const
struct
pnp_
id
*
card_id
,
const
struct
pnp
_id
*
dev_id
)
static
int
cs4232_pnp_probe
(
struct
pnp_dev
*
dev
,
const
struct
pnp_
device
_id
*
dev_id
)
{
struct
address_info
*
isapnpcfg
;
...
...
@@ -376,30 +376,31 @@ static int cs4232_pnp_probe(struct pnp_dev *dev, const struct pnp_id *card_id, c
if
(
!
isapnpcfg
)
return
-
ENOMEM
;
isapnpcfg
->
irq
=
dev
->
irq_resource
[
0
].
start
;
isapnpcfg
->
dma
=
dev
->
dma_resource
[
0
].
start
;
isapnpcfg
->
dma2
=
dev
->
dma_resource
[
1
].
start
;
isapnpcfg
->
io_base
=
dev
->
resource
[
0
].
start
;
isapnpcfg
->
irq
=
pnp_irq
(
dev
,
0
)
;
isapnpcfg
->
dma
=
pnp_dma
(
dev
,
0
)
;
isapnpcfg
->
dma2
=
pnp_dma
(
dev
,
1
)
;
isapnpcfg
->
io_base
=
pnp_port_start
(
dev
,
0
)
;
if
(
probe_cs4232
(
isapnpcfg
,
TRUE
)
==
0
)
{
printk
(
KERN_ERR
"cs4232: ISA PnP card found, but not detected?
\n
"
);
kfree
(
isapnpcfg
);
return
-
ENODEV
;
}
attach_cs4232
(
isapnpcfg
);
p
ci
_set_drvdata
(
dev
,
isapnpcfg
);
p
np
_set_drvdata
(
dev
,
isapnpcfg
);
return
0
;
}
static
void
cs4232_pnp_remove
(
struct
pnp_dev
*
dev
)
{
struct
address_info
*
cfg
=
(
struct
address_info
*
)
dev
->
driver_data
;
if
(
cfg
)
struct
address_info
*
cfg
=
pnp_get_drvdata
(
dev
)
;
if
(
cfg
)
{
unload_cs4232
(
cfg
);
kfree
(
cfg
);
}
}
static
struct
pnp_driver
cs4232_driver
=
{
.
name
=
"cs4232"
,
.
card_id_table
=
NULL
,
.
id_table
=
cs4232_pnp_table
,
.
probe
=
cs4232_pnp_probe
,
.
remove
=
cs4232_pnp_remove
,
...
...
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