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
2660f058
Commit
2660f058
authored
Apr 14, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://bk.arm.linux.org.uk/linux-2.6-rmk
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
f44ce2e5
4670ef7a
Changes
12
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
100 additions
and
49 deletions
+100
-49
Makefile
Makefile
+3
-1
arch/i386/kernel/dmi_scan.c
arch/i386/kernel/dmi_scan.c
+5
-1
arch/ppc64/kernel/signal.c
arch/ppc64/kernel/signal.c
+23
-8
arch/ppc64/kernel/signal32.c
arch/ppc64/kernel/signal32.c
+12
-9
drivers/pnp/interface.c
drivers/pnp/interface.c
+1
-1
drivers/pnp/isapnp/core.c
drivers/pnp/isapnp/core.c
+1
-1
drivers/pnp/manager.c
drivers/pnp/manager.c
+10
-14
drivers/pnp/pnpbios/proc.c
drivers/pnp/pnpbios/proc.c
+1
-1
drivers/pnp/pnpbios/rsparser.c
drivers/pnp/pnpbios/rsparser.c
+5
-0
fs/isofs/rock.c
fs/isofs/rock.c
+26
-7
fs/jfs/jfs_txnmgr.c
fs/jfs/jfs_txnmgr.c
+12
-5
kernel/rcupdate.c
kernel/rcupdate.c
+1
-1
No files found.
Makefile
View file @
2660f058
...
@@ -624,8 +624,10 @@ ifneq ($(KBUILD_SRC),)
...
@@ -624,8 +624,10 @@ ifneq ($(KBUILD_SRC),)
endif
endif
prepare0
:
prepare1 include/linux/version.h include/asm include/config/MARKER
prepare0
:
prepare1 include/linux/version.h include/asm include/config/MARKER
ifneq
($(KBUILD_MODULES),)
$(Q)
rm
-rf
$(MODVERDIR)
$(Q)
rm
-rf
$(MODVERDIR)
$(
if
$(CONFIG_MODULES)
,
$(Q)
mkdir
-p
$(MODVERDIR)
)
$(Q)
mkdir
-p
$(MODVERDIR)
endif
# All the preparing..
# All the preparing..
prepare-all
:
prepare0 prepare
prepare-all
:
prepare0 prepare
...
...
arch/i386/kernel/dmi_scan.c
View file @
2660f058
...
@@ -778,12 +778,16 @@ static __initdata struct dmi_blacklist dmi_blacklist[]={
...
@@ -778,12 +778,16 @@ static __initdata struct dmi_blacklist dmi_blacklist[]={
MATCH
(
DMI_BIOS_DATE
,
"10/26/01"
),
NO_MATCH
MATCH
(
DMI_BIOS_DATE
,
"10/26/01"
),
NO_MATCH
}
},
}
},
{
exploding_pnp_bios
,
"Higraded P14H"
,
{
/*
BIOSPnP problem
*/
{
exploding_pnp_bios
,
"Higraded P14H"
,
{
/*
PnPBIOS GPF on boot
*/
MATCH
(
DMI_BIOS_VENDOR
,
"American Megatrends Inc."
),
MATCH
(
DMI_BIOS_VENDOR
,
"American Megatrends Inc."
),
MATCH
(
DMI_BIOS_VERSION
,
"07.00T"
),
MATCH
(
DMI_BIOS_VERSION
,
"07.00T"
),
MATCH
(
DMI_SYS_VENDOR
,
"Higraded"
),
MATCH
(
DMI_SYS_VENDOR
,
"Higraded"
),
MATCH
(
DMI_PRODUCT_NAME
,
"P14H"
)
MATCH
(
DMI_PRODUCT_NAME
,
"P14H"
)
}
},
}
},
{
exploding_pnp_bios
,
"ASUS P4P800"
,
{
/* PnPBIOS GPF on boot */
MATCH
(
DMI_BOARD_VENDOR
,
"ASUSTeK Computer Inc."
),
MATCH
(
DMI_BOARD_NAME
,
"P4P800"
),
}
},
/* Machines which have problems handling enabled local APICs */
/* Machines which have problems handling enabled local APICs */
...
...
arch/ppc64/kernel/signal.c
View file @
2660f058
...
@@ -115,7 +115,7 @@ long sys_sigaltstack(const stack_t *uss, stack_t *uoss, unsigned long r5,
...
@@ -115,7 +115,7 @@ long sys_sigaltstack(const stack_t *uss, stack_t *uoss, unsigned long r5,
* Set up the sigcontext for the signal frame.
* Set up the sigcontext for the signal frame.
*/
*/
static
int
setup_sigcontext
(
struct
sigcontext
*
sc
,
struct
pt_regs
*
regs
,
static
long
setup_sigcontext
(
struct
sigcontext
*
sc
,
struct
pt_regs
*
regs
,
int
signr
,
sigset_t
*
set
,
unsigned
long
handler
)
int
signr
,
sigset_t
*
set
,
unsigned
long
handler
)
{
{
/* When CONFIG_ALTIVEC is set, we _always_ setup v_regs even if the
/* When CONFIG_ALTIVEC is set, we _always_ setup v_regs even if the
...
@@ -129,7 +129,7 @@ static int setup_sigcontext(struct sigcontext *sc, struct pt_regs *regs,
...
@@ -129,7 +129,7 @@ static int setup_sigcontext(struct sigcontext *sc, struct pt_regs *regs,
#ifdef CONFIG_ALTIVEC
#ifdef CONFIG_ALTIVEC
elf_vrreg_t
*
v_regs
=
(
elf_vrreg_t
*
)(((
unsigned
long
)
sc
->
vmx_reserve
)
&
~
0xful
);
elf_vrreg_t
*
v_regs
=
(
elf_vrreg_t
*
)(((
unsigned
long
)
sc
->
vmx_reserve
)
&
~
0xful
);
#endif
#endif
int
err
=
0
;
long
err
=
0
;
if
(
regs
->
msr
&
MSR_FP
)
if
(
regs
->
msr
&
MSR_FP
)
giveup_fpu
(
current
);
giveup_fpu
(
current
);
...
@@ -173,18 +173,32 @@ static int setup_sigcontext(struct sigcontext *sc, struct pt_regs *regs,
...
@@ -173,18 +173,32 @@ static int setup_sigcontext(struct sigcontext *sc, struct pt_regs *regs,
* Restore the sigcontext from the signal frame.
* Restore the sigcontext from the signal frame.
*/
*/
static
int
restore_sigcontext
(
struct
pt_regs
*
regs
,
sigset_t
*
set
,
int
sig
,
struct
sigcontext
*
sc
)
static
long
restore_sigcontext
(
struct
pt_regs
*
regs
,
sigset_t
*
set
,
int
sig
,
struct
sigcontext
*
sc
)
{
{
#ifdef CONFIG_ALTIVEC
#ifdef CONFIG_ALTIVEC
elf_vrreg_t
*
v_regs
;
elf_vrreg_t
*
v_regs
;
#endif
#endif
unsigned
int
err
=
0
;
unsigned
long
err
=
0
;
unsigned
long
save_r13
;
unsigned
long
save_r13
;
elf_greg_t
*
gregs
=
(
elf_greg_t
*
)
regs
;
int
i
;
/* If this is not a signal return, we preserve the TLS in r13 */
/* If this is not a signal return, we preserve the TLS in r13 */
if
(
!
sig
)
if
(
!
sig
)
save_r13
=
regs
->
gpr
[
13
];
save_r13
=
regs
->
gpr
[
13
];
err
|=
__copy_from_user
(
regs
,
&
sc
->
gp_regs
,
GP_REGS_SIZE
);
/* copy everything before MSR */
err
|=
__copy_from_user
(
regs
,
&
sc
->
gp_regs
,
PT_MSR
*
sizeof
(
unsigned
long
));
/* skip MSR and SOFTE */
for
(
i
=
PT_MSR
+
1
;
i
<=
PT_RESULT
;
i
++
)
{
if
(
i
==
PT_SOFTE
)
continue
;
err
|=
__get_user
(
gregs
[
i
],
&
sc
->
gp_regs
[
i
]);
}
if
(
!
sig
)
if
(
!
sig
)
regs
->
gpr
[
13
]
=
save_r13
;
regs
->
gpr
[
13
]
=
save_r13
;
err
|=
__copy_from_user
(
&
current
->
thread
.
fpr
,
&
sc
->
fp_regs
,
FP_REGS_SIZE
);
err
|=
__copy_from_user
(
&
current
->
thread
.
fpr
,
&
sc
->
fp_regs
,
FP_REGS_SIZE
);
...
@@ -235,9 +249,10 @@ static inline void * get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
...
@@ -235,9 +249,10 @@ static inline void * get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
/*
/*
* Setup the trampoline code on the stack
* Setup the trampoline code on the stack
*/
*/
static
int
setup_trampoline
(
unsigned
int
syscall
,
unsigned
int
*
tramp
)
static
long
setup_trampoline
(
unsigned
int
syscall
,
unsigned
int
*
tramp
)
{
{
int
i
,
err
=
0
;
int
i
;
long
err
=
0
;
/* addi r1, r1, __SIGNAL_FRAMESIZE # Pop the dummy stackframe */
/* addi r1, r1, __SIGNAL_FRAMESIZE # Pop the dummy stackframe */
err
|=
__put_user
(
0x38210000UL
|
(
__SIGNAL_FRAMESIZE
&
0xffff
),
&
tramp
[
0
]);
err
|=
__put_user
(
0x38210000UL
|
(
__SIGNAL_FRAMESIZE
&
0xffff
),
&
tramp
[
0
]);
...
@@ -372,7 +387,7 @@ static void setup_rt_frame(int signr, struct k_sigaction *ka, siginfo_t *info,
...
@@ -372,7 +387,7 @@ static void setup_rt_frame(int signr, struct k_sigaction *ka, siginfo_t *info,
func_descr_t
*
funct_desc_ptr
;
func_descr_t
*
funct_desc_ptr
;
struct
rt_sigframe
*
frame
;
struct
rt_sigframe
*
frame
;
unsigned
long
newsp
=
0
;
unsigned
long
newsp
=
0
;
int
err
=
0
;
long
err
=
0
;
frame
=
get_sigframe
(
ka
,
regs
,
sizeof
(
*
frame
));
frame
=
get_sigframe
(
ka
,
regs
,
sizeof
(
*
frame
));
...
...
arch/ppc64/kernel/signal32.c
View file @
2660f058
...
@@ -185,25 +185,28 @@ static int save_user_regs(struct pt_regs *regs, struct mcontext32 *frame, int si
...
@@ -185,25 +185,28 @@ static int save_user_regs(struct pt_regs *regs, struct mcontext32 *frame, int si
* Restore the current user register values from the user stack,
* Restore the current user register values from the user stack,
* (except for MSR).
* (except for MSR).
*/
*/
static
int
restore_user_regs
(
struct
pt_regs
*
regs
,
struct
mcontext32
__user
*
sr
,
int
sig
)
static
long
restore_user_regs
(
struct
pt_regs
*
regs
,
struct
mcontext32
__user
*
sr
,
int
sig
)
{
{
elf_greg_t64
*
gregs
=
(
elf_greg_t64
*
)
regs
;
elf_greg_t64
*
gregs
=
(
elf_greg_t64
*
)
regs
;
int
i
,
err
=
0
;
int
i
;
long
err
=
0
;
unsigned
int
save_r2
;
unsigned
int
save_r2
;
#ifdef CONFIG_ALTIVEC
#ifdef CONFIG_ALTIVEC
unsigned
long
msr
;
unsigned
long
msr
;
#endif
#endif
/*
/*
* restore general registers but not including MSR
. Also take
* restore general registers but not including MSR
or SOFTE. Also
* care of keeping r2 (TLS) intact if not a signal
*
take
care of keeping r2 (TLS) intact if not a signal
*/
*/
if
(
!
sig
)
if
(
!
sig
)
save_r2
=
(
unsigned
int
)
regs
->
gpr
[
2
];
save_r2
=
(
unsigned
int
)
regs
->
gpr
[
2
];
for
(
i
=
0
;
i
<
PT_MSR
;
i
++
)
for
(
i
=
0
;
i
<
=
PT_RESULT
;
i
++
)
{
err
|=
__get_user
(
gregs
[
i
],
&
sr
->
mc_gregs
[
i
]);
if
((
i
==
PT_MSR
)
||
(
i
==
PT_SOFTE
))
for
(
i
++
;
i
<=
PT_RESULT
;
i
++
)
continue
;
err
|=
__get_user
(
gregs
[
i
],
&
sr
->
mc_gregs
[
i
]);
err
|=
__get_user
(
gregs
[
i
],
&
sr
->
mc_gregs
[
i
]);
}
if
(
!
sig
)
if
(
!
sig
)
regs
->
gpr
[
2
]
=
(
unsigned
long
)
save_r2
;
regs
->
gpr
[
2
]
=
(
unsigned
long
)
save_r2
;
if
(
err
)
if
(
err
)
...
@@ -427,9 +430,9 @@ long sys32_rt_sigpending(compat_sigset_t *set, compat_size_t sigsetsize)
...
@@ -427,9 +430,9 @@ long sys32_rt_sigpending(compat_sigset_t *set, compat_size_t sigsetsize)
}
}
static
int
copy_siginfo_to_user32
(
compat_siginfo_t
*
d
,
siginfo_t
*
s
)
static
long
copy_siginfo_to_user32
(
compat_siginfo_t
*
d
,
siginfo_t
*
s
)
{
{
int
err
;
long
err
;
if
(
!
access_ok
(
VERIFY_WRITE
,
d
,
sizeof
(
*
d
)))
if
(
!
access_ok
(
VERIFY_WRITE
,
d
,
sizeof
(
*
d
)))
return
-
EFAULT
;
return
-
EFAULT
;
...
...
drivers/pnp/interface.c
View file @
2660f058
...
@@ -434,7 +434,7 @@ pnp_set_current_resources(struct device * dmdev, const char * ubuf, size_t count
...
@@ -434,7 +434,7 @@ pnp_set_current_resources(struct device * dmdev, const char * ubuf, size_t count
goto
done
;
goto
done
;
}
}
done:
done:
if
(
retval
)
if
(
retval
<
0
)
return
retval
;
return
retval
;
return
count
;
return
count
;
}
}
...
...
drivers/pnp/isapnp/core.c
View file @
2660f058
...
@@ -995,7 +995,7 @@ static int isapnp_read_resources(struct pnp_dev *dev, struct pnp_resource_table
...
@@ -995,7 +995,7 @@ static int isapnp_read_resources(struct pnp_dev *dev, struct pnp_resource_table
res
->
port_resource
[
tmp
].
flags
=
IORESOURCE_IO
;
res
->
port_resource
[
tmp
].
flags
=
IORESOURCE_IO
;
}
}
for
(
tmp
=
0
;
tmp
<
PNP_MAX_MEM
;
tmp
++
)
{
for
(
tmp
=
0
;
tmp
<
PNP_MAX_MEM
;
tmp
++
)
{
ret
=
isapnp_read_
dword
(
ISAPNP_CFG_MEM
+
(
tmp
<<
3
))
;
ret
=
isapnp_read_
word
(
ISAPNP_CFG_MEM
+
(
tmp
<<
3
))
<<
8
;
if
(
!
ret
)
if
(
!
ret
)
continue
;
continue
;
res
->
mem_resource
[
tmp
].
start
=
ret
;
res
->
mem_resource
[
tmp
].
start
=
ret
;
...
...
drivers/pnp/manager.c
View file @
2660f058
...
@@ -452,23 +452,19 @@ int pnp_auto_config_dev(struct pnp_dev *dev)
...
@@ -452,23 +452,19 @@ int pnp_auto_config_dev(struct pnp_dev *dev)
if
(
!
dev
->
dependent
)
{
if
(
!
dev
->
dependent
)
{
if
(
pnp_assign_resources
(
dev
,
0
))
if
(
pnp_assign_resources
(
dev
,
0
))
return
1
;
else
return
0
;
return
0
;
}
}
else
{
dep
=
dev
->
dependent
;
dep
=
dev
->
dependent
;
do
{
do
{
if
(
pnp_assign_resources
(
dev
,
i
))
if
(
pnp_assign_resources
(
dev
,
i
))
return
1
;
return
0
;
/* if this dependent resource failed, try the next one */
dep
=
dep
->
next
;
dep
=
dep
->
next
;
i
++
;
i
++
;
}
while
(
dep
);
}
while
(
dep
);
}
pnp_err
(
"Unable to assign resources to device %s."
,
dev
->
dev
.
bus_id
);
pnp_err
(
"Unable to assign resources to device %s."
,
dev
->
dev
.
bus_id
);
return
0
;
return
-
EBUSY
;
}
}
/**
/**
...
@@ -486,7 +482,7 @@ int pnp_activate_dev(struct pnp_dev *dev)
...
@@ -486,7 +482,7 @@ int pnp_activate_dev(struct pnp_dev *dev)
}
}
/* ensure resources are allocated */
/* ensure resources are allocated */
if
(
!
pnp_auto_config_dev
(
dev
))
if
(
pnp_auto_config_dev
(
dev
))
return
-
EBUSY
;
return
-
EBUSY
;
if
(
!
pnp_can_write
(
dev
))
{
if
(
!
pnp_can_write
(
dev
))
{
...
...
drivers/pnp/pnpbios/proc.c
View file @
2660f058
...
@@ -139,7 +139,7 @@ static int proc_read_devices(char *buf, char **start, off_t pos,
...
@@ -139,7 +139,7 @@ static int proc_read_devices(char *buf, char **start, off_t pos,
/* 26 = the number of characters per line sprintf'ed */
/* 26 = the number of characters per line sprintf'ed */
if
((
p
-
buf
+
26
)
>
count
)
if
((
p
-
buf
+
26
)
>
count
)
break
;
break
;
if
(
pnp_bios_get_dev_node
(
&
nodenum
,
PNPMODE_
STAT
IC
,
node
))
if
(
pnp_bios_get_dev_node
(
&
nodenum
,
PNPMODE_
DYNAM
IC
,
node
))
break
;
break
;
p
+=
sprintf
(
p
,
"%02x
\t
%08x
\t
%02x:%02x:%02x
\t
%04x
\n
"
,
p
+=
sprintf
(
p
,
"%02x
\t
%08x
\t
%02x:%02x:%02x
\t
%04x
\n
"
,
node
->
handle
,
node
->
eisa_id
,
node
->
handle
,
node
->
eisa_id
,
...
...
drivers/pnp/pnpbios/rsparser.c
View file @
2660f058
...
@@ -505,6 +505,11 @@ pnpbios_parse_compatible_ids(unsigned char *p, unsigned char *end, struct pnp_de
...
@@ -505,6 +505,11 @@ pnpbios_parse_compatible_ids(unsigned char *p, unsigned char *end, struct pnp_de
switch
(
tag
)
{
switch
(
tag
)
{
case
LARGE_TAG_ANSISTR
:
strncpy
(
dev
->
name
,
p
+
3
,
len
>=
PNP_NAME_LEN
?
PNP_NAME_LEN
-
2
:
len
);
dev
->
name
[
len
>=
PNP_NAME_LEN
?
PNP_NAME_LEN
-
1
:
len
]
=
'\0'
;
break
;
case
SMALL_TAG_COMPATDEVID
:
/* compatible ID */
case
SMALL_TAG_COMPATDEVID
:
/* compatible ID */
if
(
len
!=
4
)
if
(
len
!=
4
)
goto
len_err
;
goto
len_err
;
...
...
fs/isofs/rock.c
View file @
2660f058
...
@@ -15,6 +15,7 @@
...
@@ -15,6 +15,7 @@
#include <linux/pagemap.h>
#include <linux/pagemap.h>
#include <linux/smp_lock.h>
#include <linux/smp_lock.h>
#include <linux/buffer_head.h>
#include <linux/buffer_head.h>
#include <asm/page.h>
#include "rock.h"
#include "rock.h"
...
@@ -358,7 +359,7 @@ int parse_rock_ridge_inode_internal(struct iso_directory_record * de,
...
@@ -358,7 +359,7 @@ int parse_rock_ridge_inode_internal(struct iso_directory_record * de,
return
0
;
return
0
;
}
}
static
char
*
get_symlink_chunk
(
char
*
rpnt
,
struct
rock_ridge
*
rr
)
static
char
*
get_symlink_chunk
(
char
*
rpnt
,
struct
rock_ridge
*
rr
,
char
*
plimit
)
{
{
int
slen
;
int
slen
;
int
rootflag
;
int
rootflag
;
...
@@ -370,16 +371,25 @@ static char *get_symlink_chunk(char *rpnt, struct rock_ridge *rr)
...
@@ -370,16 +371,25 @@ static char *get_symlink_chunk(char *rpnt, struct rock_ridge *rr)
rootflag
=
0
;
rootflag
=
0
;
switch
(
slp
->
flags
&
~
1
)
{
switch
(
slp
->
flags
&
~
1
)
{
case
0
:
case
0
:
if
(
slp
->
len
>
plimit
-
rpnt
)
return
NULL
;
memcpy
(
rpnt
,
slp
->
text
,
slp
->
len
);
memcpy
(
rpnt
,
slp
->
text
,
slp
->
len
);
rpnt
+=
slp
->
len
;
rpnt
+=
slp
->
len
;
break
;
break
;
case
2
:
if
(
rpnt
>=
plimit
)
return
NULL
;
*
rpnt
++=
'.'
;
break
;
case
4
:
case
4
:
if
(
2
>
plimit
-
rpnt
)
return
NULL
;
*
rpnt
++=
'.'
;
*
rpnt
++=
'.'
;
/* fallthru */
case
2
:
*
rpnt
++=
'.'
;
*
rpnt
++=
'.'
;
break
;
break
;
case
8
:
case
8
:
if
(
rpnt
>=
plimit
)
return
NULL
;
rootflag
=
1
;
rootflag
=
1
;
*
rpnt
++=
'/'
;
*
rpnt
++=
'/'
;
break
;
break
;
...
@@ -396,17 +406,23 @@ static char *get_symlink_chunk(char *rpnt, struct rock_ridge *rr)
...
@@ -396,17 +406,23 @@ static char *get_symlink_chunk(char *rpnt, struct rock_ridge *rr)
* If there is another SL record, and this component
* If there is another SL record, and this component
* record isn't continued, then add a slash.
* record isn't continued, then add a slash.
*/
*/
if
((
!
rootflag
)
&&
(
rr
->
u
.
SL
.
flags
&
1
)
&&
!
(
oldslp
->
flags
&
1
))
if
((
!
rootflag
)
&&
(
rr
->
u
.
SL
.
flags
&
1
)
&&
!
(
oldslp
->
flags
&
1
))
{
if
(
rpnt
>=
plimit
)
return
NULL
;
*
rpnt
++=
'/'
;
*
rpnt
++=
'/'
;
}
break
;
break
;
}
}
/*
/*
* If this component record isn't continued, then append a '/'.
* If this component record isn't continued, then append a '/'.
*/
*/
if
(
!
rootflag
&&
!
(
oldslp
->
flags
&
1
))
if
(
!
rootflag
&&
!
(
oldslp
->
flags
&
1
))
{
if
(
rpnt
>=
plimit
)
return
NULL
;
*
rpnt
++=
'/'
;
*
rpnt
++=
'/'
;
}
}
}
return
rpnt
;
return
rpnt
;
}
}
...
@@ -487,7 +503,10 @@ static int rock_ridge_symlink_readpage(struct file *file, struct page *page)
...
@@ -487,7 +503,10 @@ static int rock_ridge_symlink_readpage(struct file *file, struct page *page)
CHECK_SP
(
goto
out
);
CHECK_SP
(
goto
out
);
break
;
break
;
case
SIG
(
'S'
,
'L'
):
case
SIG
(
'S'
,
'L'
):
rpnt
=
get_symlink_chunk
(
rpnt
,
rr
);
rpnt
=
get_symlink_chunk
(
rpnt
,
rr
,
link
+
(
PAGE_SIZE
-
1
));
if
(
rpnt
==
NULL
)
goto
out
;
break
;
break
;
case
SIG
(
'C'
,
'E'
):
case
SIG
(
'C'
,
'E'
):
/* This tells is if there is a continuation record */
/* This tells is if there is a continuation record */
...
...
fs/jfs/jfs_txnmgr.c
View file @
2660f058
...
@@ -2977,11 +2977,12 @@ int jfs_sync(void *arg)
...
@@ -2977,11 +2977,12 @@ int jfs_sync(void *arg)
anon_inode_list
);
anon_inode_list
);
ip
=
&
jfs_ip
->
vfs_inode
;
ip
=
&
jfs_ip
->
vfs_inode
;
if
(
!
igrab
(
ip
))
{
/*
/*
* down_trylock returns 0 on success. This is
* Inode is being freed
* inconsistent with spin_trylock.
*/
*/
if
(
!
down_trylock
(
&
jfs_ip
->
commit_sem
))
{
list_del_init
(
&
jfs_ip
->
anon_inode_list
);
}
else
if
(
!
down_trylock
(
&
jfs_ip
->
commit_sem
))
{
/*
/*
* inode will be removed from anonymous list
* inode will be removed from anonymous list
* when it is committed
* when it is committed
...
@@ -2991,6 +2992,8 @@ int jfs_sync(void *arg)
...
@@ -2991,6 +2992,8 @@ int jfs_sync(void *arg)
rc
=
txCommit
(
tid
,
1
,
&
ip
,
0
);
rc
=
txCommit
(
tid
,
1
,
&
ip
,
0
);
txEnd
(
tid
);
txEnd
(
tid
);
up
(
&
jfs_ip
->
commit_sem
);
up
(
&
jfs_ip
->
commit_sem
);
iput
(
ip
);
/*
/*
* Just to be safe. I don't know how
* Just to be safe. I don't know how
* long we can run without blocking
* long we can run without blocking
...
@@ -3010,6 +3013,10 @@ int jfs_sync(void *arg)
...
@@ -3010,6 +3013,10 @@ int jfs_sync(void *arg)
/* Put on anon_list2 */
/* Put on anon_list2 */
list_add
(
&
jfs_ip
->
anon_inode_list
,
list_add
(
&
jfs_ip
->
anon_inode_list
,
&
TxAnchor
.
anon_list2
);
&
TxAnchor
.
anon_list2
);
TXN_UNLOCK
();
iput
(
ip
);
TXN_LOCK
();
}
}
}
}
/* Add anon_list2 back to anon_list */
/* Add anon_list2 back to anon_list */
...
...
kernel/rcupdate.c
View file @
2660f058
...
@@ -182,7 +182,7 @@ static void rcu_offline_cpu(int cpu)
...
@@ -182,7 +182,7 @@ static void rcu_offline_cpu(int cpu)
* it here
* it here
*/
*/
spin_lock_irq
(
&
rcu_ctrlblk
.
mutex
);
spin_lock_irq
(
&
rcu_ctrlblk
.
mutex
);
if
(
!
rcu_ctrlblk
.
rcu_cpu_mask
)
if
(
cpus_empty
(
rcu_ctrlblk
.
rcu_cpu_mask
)
)
goto
unlock
;
goto
unlock
;
cpu_clear
(
cpu
,
rcu_ctrlblk
.
rcu_cpu_mask
);
cpu_clear
(
cpu
,
rcu_ctrlblk
.
rcu_cpu_mask
);
...
...
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