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
ab7666d1
Commit
ab7666d1
authored
Mar 24, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
http://lia64.bkbits.net/to-linus-2.5
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
c851c3f9
f158809e
Changes
35
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
35 changed files
with
290 additions
and
240 deletions
+290
-240
arch/ppc64/kernel/idle.c
arch/ppc64/kernel/idle.c
+4
-4
arch/ppc64/kernel/sys_ppc32.c
arch/ppc64/kernel/sys_ppc32.c
+7
-7
drivers/block/Kconfig
drivers/block/Kconfig
+1
-1
drivers/cdrom/cdrom.c
drivers/cdrom/cdrom.c
+11
-2
drivers/char/vt.c
drivers/char/vt.c
+3
-1
drivers/ide/ide-cd.c
drivers/ide/ide-cd.c
+1
-0
drivers/net/b44.c
drivers/net/b44.c
+2
-0
drivers/scsi/Kconfig
drivers/scsi/Kconfig
+1
-1
drivers/scsi/sata_via.c
drivers/scsi/sata_via.c
+1
-1
drivers/scsi/sr.c
drivers/scsi/sr.c
+1
-0
fs/ext2/ialloc.c
fs/ext2/ialloc.c
+1
-1
fs/ext3/ialloc.c
fs/ext3/ialloc.c
+1
-1
fs/jfs/jfs_dmap.c
fs/jfs/jfs_dmap.c
+11
-5
fs/jfs/jfs_dtree.c
fs/jfs/jfs_dtree.c
+12
-4
fs/jfs/jfs_imap.c
fs/jfs/jfs_imap.c
+7
-0
fs/jfs/jfs_logmgr.c
fs/jfs/jfs_logmgr.c
+6
-2
fs/jfs/jfs_txnmgr.c
fs/jfs/jfs_txnmgr.c
+1
-5
fs/jfs/jfs_xtree.c
fs/jfs/jfs_xtree.c
+116
-95
fs/super.c
fs/super.c
+1
-1
include/asm-x86_64/pci.h
include/asm-x86_64/pci.h
+1
-1
net/ipv4/Kconfig
net/ipv4/Kconfig
+0
-19
net/ipv4/ipvs/ip_vs_conn.c
net/ipv4/ipvs/ip_vs_conn.c
+44
-32
net/ipv4/ipvs/ip_vs_ctl.c
net/ipv4/ipvs/ip_vs_ctl.c
+7
-0
net/ipv4/netfilter/Kconfig
net/ipv4/netfilter/Kconfig
+2
-2
net/ipv4/netfilter/ip_fw_compat_masq.c
net/ipv4/netfilter/ip_fw_compat_masq.c
+1
-1
net/ipv4/netfilter/ipchains_core.c
net/ipv4/netfilter/ipchains_core.c
+1
-0
net/ipv4/tcp_diag.c
net/ipv4/tcp_diag.c
+0
-2
net/ipv4/tcp_input.c
net/ipv4/tcp_input.c
+0
-4
net/ipv6/ip6_output.c
net/ipv6/ip6_output.c
+3
-0
net/key/af_key.c
net/key/af_key.c
+1
-0
net/sched/sch_tbf.c
net/sched/sch_tbf.c
+37
-40
net/sctp/Kconfig
net/sctp/Kconfig
+2
-6
net/sctp/sm_make_chunk.c
net/sctp/sm_make_chunk.c
+1
-1
net/sctp/ulpevent.c
net/sctp/ulpevent.c
+1
-1
net/xfrm/xfrm_user.c
net/xfrm/xfrm_user.c
+1
-0
No files found.
arch/ppc64/kernel/idle.c
View file @
ab7666d1
...
@@ -172,16 +172,16 @@ int dedicated_idle(void)
...
@@ -172,16 +172,16 @@ int dedicated_idle(void)
oldval
=
test_and_clear_thread_flag
(
TIF_NEED_RESCHED
);
oldval
=
test_and_clear_thread_flag
(
TIF_NEED_RESCHED
);
if
(
!
oldval
)
{
if
(
!
oldval
)
{
set_thread_flag
(
TIF_POLLING_NRFLAG
);
set_thread_flag
(
TIF_POLLING_NRFLAG
);
start_snooze
=
__get_tb
();
start_snooze
=
__get_tb
()
+
naca
->
smt_snooze_delay
*
tb_ticks_per_usec
;
while
(
!
need_resched
())
{
while
(
!
need_resched
())
{
/* need_resched could be 1 or 0 at this
/* need_resched could be 1 or 0 at this
* point. If it is 0, set it to 0, so
* point. If it is 0, set it to 0, so
* an IPI/Prod is sent. If it is 1, keep
* an IPI/Prod is sent. If it is 1, keep
* it that way & schedule work.
* it that way & schedule work.
*/
*/
if
(
__get_tb
()
<
if
(
naca
->
smt_snooze_delay
==
0
||
(
start_snooze
+
__get_tb
()
<
start_snooze
)
{
naca
->
smt_snooze_delay
*
tb_ticks_per_usec
))
{
HMT_low
();
/* Low thread priority */
HMT_low
();
/* Low thread priority */
continue
;
continue
;
}
}
...
...
arch/ppc64/kernel/sys_ppc32.c
View file @
ab7666d1
...
@@ -405,14 +405,13 @@ asmlinkage long sys32_mount(char *dev_name, char *dir_name, char *type, unsigned
...
@@ -405,14 +405,13 @@ asmlinkage long sys32_mount(char *dev_name, char *dir_name, char *type, unsigned
if
(
err
)
if
(
err
)
goto
out
;
goto
out
;
if
(
!
type_page
)
{
if
(
type_page
)
{
err
=
-
EINVAL
;
is_smb
=
!
strcmp
((
char
*
)
type_page
,
SMBFS_NAME
);
goto
out
;
is_ncp
=
!
strcmp
((
char
*
)
type_page
,
NCPFS_NAME
);
}
else
{
is_smb
=
is_ncp
=
0
;
}
}
is_smb
=
!
strcmp
((
char
*
)
type_page
,
SMBFS_NAME
);
is_ncp
=
!
strcmp
((
char
*
)
type_page
,
NCPFS_NAME
);
err
=
copy_mount_stuff_to_kernel
((
const
void
*
)
AA
(
data
),
&
data_page
);
err
=
copy_mount_stuff_to_kernel
((
const
void
*
)
AA
(
data
),
&
data_page
);
if
(
err
)
if
(
err
)
goto
type_out
;
goto
type_out
;
...
@@ -534,7 +533,7 @@ filldir(void * __buf, const char * name, int namlen, off_t offset, ino_t ino,
...
@@ -534,7 +533,7 @@ filldir(void * __buf, const char * name, int namlen, off_t offset, ino_t ino,
{
{
struct
linux_dirent32
*
dirent
;
struct
linux_dirent32
*
dirent
;
struct
getdents_callback32
*
buf
=
(
struct
getdents_callback32
*
)
__buf
;
struct
getdents_callback32
*
buf
=
(
struct
getdents_callback32
*
)
__buf
;
int
reclen
=
ROUND_UP
(
NAME_OFFSET
(
dirent
)
+
namlen
+
1
);
int
reclen
=
ROUND_UP
(
NAME_OFFSET
(
dirent
)
+
namlen
+
2
);
buf
->
error
=
-
EINVAL
;
/* only used if we fail.. */
buf
->
error
=
-
EINVAL
;
/* only used if we fail.. */
if
(
reclen
>
buf
->
count
)
if
(
reclen
>
buf
->
count
)
...
@@ -548,6 +547,7 @@ filldir(void * __buf, const char * name, int namlen, off_t offset, ino_t ino,
...
@@ -548,6 +547,7 @@ filldir(void * __buf, const char * name, int namlen, off_t offset, ino_t ino,
put_user
(
reclen
,
&
dirent
->
d_reclen
);
put_user
(
reclen
,
&
dirent
->
d_reclen
);
copy_to_user
(
dirent
->
d_name
,
name
,
namlen
);
copy_to_user
(
dirent
->
d_name
,
name
,
namlen
);
put_user
(
0
,
dirent
->
d_name
+
namlen
);
put_user
(
0
,
dirent
->
d_name
+
namlen
);
put_user
(
d_type
,
(
char
*
)
dirent
+
reclen
-
1
);
((
char
*
)
dirent
)
+=
reclen
;
((
char
*
)
dirent
)
+=
reclen
;
buf
->
current_dir
=
dirent
;
buf
->
current_dir
=
dirent
;
buf
->
count
-=
reclen
;
buf
->
count
-=
reclen
;
...
...
drivers/block/Kconfig
View file @
ab7666d1
...
@@ -6,7 +6,7 @@ menu "Block devices"
...
@@ -6,7 +6,7 @@ menu "Block devices"
config BLK_DEV_FD
config BLK_DEV_FD
tristate "Normal floppy disk support"
tristate "Normal floppy disk support"
depends on (!X86_PC9800 && !ARCH_S390 && !M68K) || Q40 || (SUN3X && BROKEN)
depends on (!X86_PC9800 && !ARCH_S390 && !M68K
&& !IA64
) || Q40 || (SUN3X && BROKEN)
---help---
---help---
If you want to use the floppy disk drive(s) of your PC under Linux,
If you want to use the floppy disk drive(s) of your PC under Linux,
say Y. Information about this driver, especially important for IBM
say Y. Information about this driver, especially important for IBM
...
...
drivers/cdrom/cdrom.c
View file @
ab7666d1
...
@@ -725,7 +725,7 @@ static int cdrom_media_erasable(struct cdrom_device_info *cdi)
...
@@ -725,7 +725,7 @@ static int cdrom_media_erasable(struct cdrom_device_info *cdi)
disc_information
di
;
disc_information
di
;
if
(
cdrom_get_disc_info
(
cdi
,
&
di
))
if
(
cdrom_get_disc_info
(
cdi
,
&
di
))
return
0
;
return
-
1
;
return
di
.
erasable
;
return
di
.
erasable
;
}
}
...
@@ -735,7 +735,16 @@ static int cdrom_media_erasable(struct cdrom_device_info *cdi)
...
@@ -735,7 +735,16 @@ static int cdrom_media_erasable(struct cdrom_device_info *cdi)
*/
*/
static
int
cdrom_dvdram_open_write
(
struct
cdrom_device_info
*
cdi
)
static
int
cdrom_dvdram_open_write
(
struct
cdrom_device_info
*
cdi
)
{
{
return
!
cdrom_media_erasable
(
cdi
);
int
ret
=
cdrom_media_erasable
(
cdi
);
/*
* allow writable open if media info read worked and media is
* erasable, _or_ if it fails since not all drives support it
*/
if
(
!
ret
)
return
1
;
return
0
;
}
}
static
int
cdrom_mrw_open_write
(
struct
cdrom_device_info
*
cdi
)
static
int
cdrom_mrw_open_write
(
struct
cdrom_device_info
*
cdi
)
...
...
drivers/char/vt.c
View file @
ab7666d1
...
@@ -2487,11 +2487,13 @@ static void con_close(struct tty_struct *tty, struct file *filp)
...
@@ -2487,11 +2487,13 @@ static void con_close(struct tty_struct *tty, struct file *filp)
if
(
tty
&&
tty
->
count
==
1
)
{
if
(
tty
&&
tty
->
count
==
1
)
{
struct
vt_struct
*
vt
;
struct
vt_struct
*
vt
;
vcs_remove_devfs
(
tty
);
vt
=
tty
->
driver_data
;
vt
=
tty
->
driver_data
;
if
(
vt
)
if
(
vt
)
vc_cons
[
vt
->
vc_num
].
d
->
vc_tty
=
NULL
;
vc_cons
[
vt
->
vc_num
].
d
->
vc_tty
=
NULL
;
tty
->
driver_data
=
0
;
tty
->
driver_data
=
0
;
release_console_sem
();
vcs_remove_devfs
(
tty
);
return
;
}
}
release_console_sem
();
release_console_sem
();
}
}
...
...
drivers/ide/ide-cd.c
View file @
ab7666d1
...
@@ -3510,6 +3510,7 @@ static int ide_cdrom_attach (ide_drive_t *drive)
...
@@ -3510,6 +3510,7 @@ static int ide_cdrom_attach (ide_drive_t *drive)
cdrom_read_toc
(
drive
,
&
sense
);
cdrom_read_toc
(
drive
,
&
sense
);
g
->
fops
=
&
idecd_ops
;
g
->
fops
=
&
idecd_ops
;
g
->
flags
|=
GENHD_FL_REMOVABLE
;
add_disk
(
g
);
add_disk
(
g
);
return
0
;
return
0
;
failed:
failed:
...
...
drivers/net/b44.c
View file @
ab7666d1
...
@@ -1892,6 +1892,8 @@ static int b44_resume(struct pci_dev *pdev)
...
@@ -1892,6 +1892,8 @@ static int b44_resume(struct pci_dev *pdev)
if
(
!
netif_running
(
dev
))
if
(
!
netif_running
(
dev
))
return
0
;
return
0
;
pci_restore_state
(
pdev
,
bp
->
pci_cfg_state
);
spin_lock_irq
(
&
bp
->
lock
);
spin_lock_irq
(
&
bp
->
lock
);
b44_init_rings
(
bp
);
b44_init_rings
(
bp
);
...
...
drivers/scsi/Kconfig
View file @
ab7666d1
...
@@ -443,7 +443,7 @@ config SCSI_SATA_PROMISE
...
@@ -443,7 +443,7 @@ config SCSI_SATA_PROMISE
config SCSI_SATA_SIL
config SCSI_SATA_SIL
tristate "Silicon Image SATA support"
tristate "Silicon Image SATA support"
depends on SCSI_SATA && PCI &&
BROKEN
depends on SCSI_SATA && PCI &&
EXPERIMENTAL
help
help
This option enables support for Silicon Image Serial ATA.
This option enables support for Silicon Image Serial ATA.
...
...
drivers/scsi/sata_via.c
View file @
ab7666d1
...
@@ -205,7 +205,7 @@ static int svia_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
...
@@ -205,7 +205,7 @@ static int svia_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
INIT_LIST_HEAD
(
&
probe_ent
->
node
);
INIT_LIST_HEAD
(
&
probe_ent
->
node
);
probe_ent
->
pdev
=
pdev
;
probe_ent
->
pdev
=
pdev
;
probe_ent
->
sht
=
&
svia_sht
;
probe_ent
->
sht
=
&
svia_sht
;
probe_ent
->
host_flags
=
ATA_FLAG_SATA
|
ATA_FLAG_S
ATA_RESE
T
|
probe_ent
->
host_flags
=
ATA_FLAG_SATA
|
ATA_FLAG_S
RS
T
|
ATA_FLAG_NO_LEGACY
;
ATA_FLAG_NO_LEGACY
;
probe_ent
->
port_ops
=
&
svia_sata_ops
;
probe_ent
->
port_ops
=
&
svia_sata_ops
;
probe_ent
->
n_ports
=
2
;
probe_ent
->
n_ports
=
2
;
...
...
drivers/scsi/sr.c
View file @
ab7666d1
...
@@ -575,6 +575,7 @@ static int sr_probe(struct device *dev)
...
@@ -575,6 +575,7 @@ static int sr_probe(struct device *dev)
goto
fail_put
;
goto
fail_put
;
dev_set_drvdata
(
dev
,
cd
);
dev_set_drvdata
(
dev
,
cd
);
disk
->
flags
|=
GENHD_FL_REMOVABLE
;
add_disk
(
disk
);
add_disk
(
disk
);
printk
(
KERN_DEBUG
printk
(
KERN_DEBUG
...
...
fs/ext2/ialloc.c
View file @
ab7666d1
...
@@ -294,7 +294,7 @@ static int find_group_orlov(struct super_block *sb, struct inode *parent)
...
@@ -294,7 +294,7 @@ static int find_group_orlov(struct super_block *sb, struct inode *parent)
ndirs
=
percpu_counter_read_positive
(
&
sbi
->
s_dirs_counter
);
ndirs
=
percpu_counter_read_positive
(
&
sbi
->
s_dirs_counter
);
if
((
parent
==
sb
->
s_root
->
d_inode
)
||
if
((
parent
==
sb
->
s_root
->
d_inode
)
||
(
parent
->
i_flags
&
EXT2_TOPDIR_FL
))
{
(
EXT2_I
(
parent
)
->
i_flags
&
EXT2_TOPDIR_FL
))
{
struct
ext2_group_desc
*
best_desc
=
NULL
;
struct
ext2_group_desc
*
best_desc
=
NULL
;
struct
buffer_head
*
best_bh
=
NULL
;
struct
buffer_head
*
best_bh
=
NULL
;
int
best_ndir
=
inodes_per_group
;
int
best_ndir
=
inodes_per_group
;
...
...
fs/ext3/ialloc.c
View file @
ab7666d1
...
@@ -275,7 +275,7 @@ static int find_group_orlov(struct super_block *sb, struct inode *parent)
...
@@ -275,7 +275,7 @@ static int find_group_orlov(struct super_block *sb, struct inode *parent)
ndirs
=
percpu_counter_read_positive
(
&
sbi
->
s_dirs_counter
);
ndirs
=
percpu_counter_read_positive
(
&
sbi
->
s_dirs_counter
);
if
((
parent
==
sb
->
s_root
->
d_inode
)
||
if
((
parent
==
sb
->
s_root
->
d_inode
)
||
(
parent
->
i_flags
&
EXT3_TOPDIR_FL
))
{
(
EXT3_I
(
parent
)
->
i_flags
&
EXT3_TOPDIR_FL
))
{
int
best_ndir
=
inodes_per_group
;
int
best_ndir
=
inodes_per_group
;
int
best_group
=
-
1
;
int
best_group
=
-
1
;
...
...
fs/jfs/jfs_dmap.c
View file @
ab7666d1
...
@@ -1526,6 +1526,7 @@ dbAllocAG(struct bmap * bmp, int agno, s64 nblocks, int l2nb, s64 * results)
...
@@ -1526,6 +1526,7 @@ dbAllocAG(struct bmap * bmp, int agno, s64 nblocks, int l2nb, s64 * results)
if
(
n
==
4
)
{
if
(
n
==
4
)
{
jfs_error
(
bmp
->
db_ipbmap
->
i_sb
,
jfs_error
(
bmp
->
db_ipbmap
->
i_sb
,
"dbAllocAG: failed descending stree"
);
"dbAllocAG: failed descending stree"
);
release_metapage
(
mp
);
return
-
EIO
;
return
-
EIO
;
}
}
}
}
...
@@ -3310,7 +3311,7 @@ int dbExtendFS(struct inode *ipbmap, s64 blkno, s64 nblocks)
...
@@ -3310,7 +3311,7 @@ int dbExtendFS(struct inode *ipbmap, s64 blkno, s64 nblocks)
int
i
,
i0
=
TRUE
,
j
,
j0
=
TRUE
,
k
,
n
;
int
i
,
i0
=
TRUE
,
j
,
j0
=
TRUE
,
k
,
n
;
s64
newsize
;
s64
newsize
;
s64
p
;
s64
p
;
struct
metapage
*
mp
,
*
l2mp
,
*
l1mp
,
*
l0mp
;
struct
metapage
*
mp
,
*
l2mp
,
*
l1mp
=
NULL
,
*
l0mp
=
NULL
;
struct
dmapctl
*
l2dcp
,
*
l1dcp
,
*
l0dcp
;
struct
dmapctl
*
l2dcp
,
*
l1dcp
,
*
l0dcp
;
struct
dmap
*
dp
;
struct
dmap
*
dp
;
s8
*
l0leaf
,
*
l1leaf
,
*
l2leaf
;
s8
*
l0leaf
,
*
l1leaf
,
*
l2leaf
;
...
@@ -3513,6 +3514,7 @@ int dbExtendFS(struct inode *ipbmap, s64 blkno, s64 nblocks)
...
@@ -3513,6 +3514,7 @@ int dbExtendFS(struct inode *ipbmap, s64 blkno, s64 nblocks)
*/
*/
*
l1leaf
=
dbInitDmapCtl
(
l0dcp
,
0
,
++
i
);
*
l1leaf
=
dbInitDmapCtl
(
l0dcp
,
0
,
++
i
);
write_metapage
(
l0mp
);
write_metapage
(
l0mp
);
l0mp
=
NULL
;
if
(
nblocks
)
if
(
nblocks
)
l1leaf
++
;
/* continue for next L0 */
l1leaf
++
;
/* continue for next L0 */
...
@@ -3536,6 +3538,7 @@ int dbExtendFS(struct inode *ipbmap, s64 blkno, s64 nblocks)
...
@@ -3536,6 +3538,7 @@ int dbExtendFS(struct inode *ipbmap, s64 blkno, s64 nblocks)
*/
*/
*
l2leaf
=
dbInitDmapCtl
(
l1dcp
,
1
,
++
j
);
*
l2leaf
=
dbInitDmapCtl
(
l1dcp
,
1
,
++
j
);
write_metapage
(
l1mp
);
write_metapage
(
l1mp
);
l1mp
=
NULL
;
if
(
nblocks
)
if
(
nblocks
)
l2leaf
++
;
/* continue for next L1 */
l2leaf
++
;
/* continue for next L1 */
...
@@ -3554,17 +3557,20 @@ int dbExtendFS(struct inode *ipbmap, s64 blkno, s64 nblocks)
...
@@ -3554,17 +3557,20 @@ int dbExtendFS(struct inode *ipbmap, s64 blkno, s64 nblocks)
jfs_error
(
ipbmap
->
i_sb
,
jfs_error
(
ipbmap
->
i_sb
,
"dbExtendFS: function has not returned as expected"
);
"dbExtendFS: function has not returned as expected"
);
errout:
if
(
l0mp
)
release_metapage
(
l0mp
);
if
(
l1mp
)
release_metapage
(
l1mp
);
release_metapage
(
l2mp
);
return
-
EIO
;
return
-
EIO
;
/*
/*
* finalize bmap control page
* finalize bmap control page
*/
*/
finalize:
finalize:
return
0
;
return
0
;
errout:
return
-
EIO
;
}
}
...
...
fs/jfs/jfs_dtree.c
View file @
ab7666d1
...
@@ -1423,8 +1423,10 @@ static int dtSplitPage(tid_t tid, struct inode *ip, struct dtsplit * split,
...
@@ -1423,8 +1423,10 @@ static int dtSplitPage(tid_t tid, struct inode *ip, struct dtsplit * split,
*/
*/
if
(
nextbn
!=
0
)
{
if
(
nextbn
!=
0
)
{
DT_GETPAGE
(
ip
,
nextbn
,
mp
,
PSIZE
,
p
,
rc
);
DT_GETPAGE
(
ip
,
nextbn
,
mp
,
PSIZE
,
p
,
rc
);
if
(
rc
)
if
(
rc
)
{
discard_metapage
(
rmp
);
return
rc
;
return
rc
;
}
BT_MARK_DIRTY
(
mp
,
ip
);
BT_MARK_DIRTY
(
mp
,
ip
);
/*
/*
...
@@ -2235,8 +2237,10 @@ static int dtDeleteUp(tid_t tid, struct inode *ip,
...
@@ -2235,8 +2237,10 @@ static int dtDeleteUp(tid_t tid, struct inode *ip,
pxdlock
->
index
=
1
;
pxdlock
->
index
=
1
;
/* update sibling pointers */
/* update sibling pointers */
if
((
rc
=
dtRelink
(
tid
,
ip
,
fp
)))
if
((
rc
=
dtRelink
(
tid
,
ip
,
fp
)))
{
BT_PUTPAGE
(
fmp
);
return
rc
;
return
rc
;
}
xlen
=
lengthPXD
(
&
fp
->
header
.
self
);
xlen
=
lengthPXD
(
&
fp
->
header
.
self
);
ip
->
i_blocks
-=
LBLK2PBLK
(
ip
->
i_sb
,
xlen
);
ip
->
i_blocks
-=
LBLK2PBLK
(
ip
->
i_sb
,
xlen
);
...
@@ -2307,8 +2311,10 @@ static int dtDeleteUp(tid_t tid, struct inode *ip,
...
@@ -2307,8 +2311,10 @@ static int dtDeleteUp(tid_t tid, struct inode *ip,
pxdlock
->
index
=
1
;
pxdlock
->
index
=
1
;
/* update sibling pointers */
/* update sibling pointers */
if
((
rc
=
dtRelink
(
tid
,
ip
,
p
)))
if
((
rc
=
dtRelink
(
tid
,
ip
,
p
)))
{
DT_PUTPAGE
(
mp
);
return
rc
;
return
rc
;
}
xlen
=
lengthPXD
(
&
p
->
header
.
self
);
xlen
=
lengthPXD
(
&
p
->
header
.
self
);
ip
->
i_blocks
-=
LBLK2PBLK
(
ip
->
i_sb
,
xlen
);
ip
->
i_blocks
-=
LBLK2PBLK
(
ip
->
i_sb
,
xlen
);
...
@@ -2621,8 +2627,10 @@ static int dtSearchNode(struct inode *ip, s64 lmxaddr, pxd_t * kpxd,
...
@@ -2621,8 +2627,10 @@ static int dtSearchNode(struct inode *ip, s64 lmxaddr, pxd_t * kpxd,
/*
/*
* descend down to leftmost child page
* descend down to leftmost child page
*/
*/
if
(
p
->
header
.
flag
&
BT_LEAF
)
if
(
p
->
header
.
flag
&
BT_LEAF
)
{
DT_PUTPAGE
(
mp
);
return
-
ESTALE
;
return
-
ESTALE
;
}
/* get the leftmost entry */
/* get the leftmost entry */
stbl
=
DT_GETSTBL
(
p
);
stbl
=
DT_GETSTBL
(
p
);
...
...
fs/jfs/jfs_imap.c
View file @
ab7666d1
...
@@ -1546,6 +1546,7 @@ int diAlloc(struct inode *pip, boolean_t dir, struct inode *ip)
...
@@ -1546,6 +1546,7 @@ int diAlloc(struct inode *pip, boolean_t dir, struct inode *ip)
0
);
0
);
if
(
rem
>=
INOSPEREXT
)
{
if
(
rem
>=
INOSPEREXT
)
{
IREAD_UNLOCK
(
ipimap
);
IREAD_UNLOCK
(
ipimap
);
release_metapage
(
mp
);
AG_UNLOCK
(
imap
,
agno
);
AG_UNLOCK
(
imap
,
agno
);
jfs_error
(
ip
->
i_sb
,
jfs_error
(
ip
->
i_sb
,
"diAlloc: can't find free bit "
"diAlloc: can't find free bit "
...
@@ -1840,6 +1841,7 @@ static int diAllocIno(struct inomap * imap, int agno, struct inode *ip)
...
@@ -1840,6 +1841,7 @@ static int diAllocIno(struct inomap * imap, int agno, struct inode *ip)
*/
*/
if
(
!
iagp
->
nfreeinos
)
{
if
(
!
iagp
->
nfreeinos
)
{
IREAD_UNLOCK
(
imap
->
im_ipimap
);
IREAD_UNLOCK
(
imap
->
im_ipimap
);
release_metapage
(
mp
);
jfs_error
(
ip
->
i_sb
,
jfs_error
(
ip
->
i_sb
,
"diAllocIno: nfreeinos = 0, but iag on freelist"
);
"diAllocIno: nfreeinos = 0, but iag on freelist"
);
return
-
EIO
;
return
-
EIO
;
...
@@ -1851,6 +1853,7 @@ static int diAllocIno(struct inomap * imap, int agno, struct inode *ip)
...
@@ -1851,6 +1853,7 @@ static int diAllocIno(struct inomap * imap, int agno, struct inode *ip)
for
(
sword
=
0
;;
sword
++
)
{
for
(
sword
=
0
;;
sword
++
)
{
if
(
sword
>=
SMAPSZ
)
{
if
(
sword
>=
SMAPSZ
)
{
IREAD_UNLOCK
(
imap
->
im_ipimap
);
IREAD_UNLOCK
(
imap
->
im_ipimap
);
release_metapage
(
mp
);
jfs_error
(
ip
->
i_sb
,
jfs_error
(
ip
->
i_sb
,
"diAllocIno: free inode not found in summary map"
);
"diAllocIno: free inode not found in summary map"
);
return
-
EIO
;
return
-
EIO
;
...
@@ -1866,6 +1869,7 @@ static int diAllocIno(struct inomap * imap, int agno, struct inode *ip)
...
@@ -1866,6 +1869,7 @@ static int diAllocIno(struct inomap * imap, int agno, struct inode *ip)
rem
=
diFindFree
(
le32_to_cpu
(
iagp
->
inosmap
[
sword
]),
0
);
rem
=
diFindFree
(
le32_to_cpu
(
iagp
->
inosmap
[
sword
]),
0
);
if
(
rem
>=
EXTSPERSUM
)
{
if
(
rem
>=
EXTSPERSUM
)
{
IREAD_UNLOCK
(
imap
->
im_ipimap
);
IREAD_UNLOCK
(
imap
->
im_ipimap
);
release_metapage
(
mp
);
jfs_error
(
ip
->
i_sb
,
"diAllocIno: no free extent found"
);
jfs_error
(
ip
->
i_sb
,
"diAllocIno: no free extent found"
);
return
-
EIO
;
return
-
EIO
;
}
}
...
@@ -1876,6 +1880,7 @@ static int diAllocIno(struct inomap * imap, int agno, struct inode *ip)
...
@@ -1876,6 +1880,7 @@ static int diAllocIno(struct inomap * imap, int agno, struct inode *ip)
rem
=
diFindFree
(
le32_to_cpu
(
iagp
->
wmap
[
extno
]),
0
);
rem
=
diFindFree
(
le32_to_cpu
(
iagp
->
wmap
[
extno
]),
0
);
if
(
rem
>=
INOSPEREXT
)
{
if
(
rem
>=
INOSPEREXT
)
{
IREAD_UNLOCK
(
imap
->
im_ipimap
);
IREAD_UNLOCK
(
imap
->
im_ipimap
);
release_metapage
(
mp
);
jfs_error
(
ip
->
i_sb
,
"diAllocIno: free inode not found"
);
jfs_error
(
ip
->
i_sb
,
"diAllocIno: free inode not found"
);
return
-
EIO
;
return
-
EIO
;
}
}
...
@@ -2839,12 +2844,14 @@ diUpdatePMap(struct inode *ipimap,
...
@@ -2839,12 +2844,14 @@ diUpdatePMap(struct inode *ipimap,
* and should be free in persistent map;
* and should be free in persistent map;
*/
*/
if
(
!
(
le32_to_cpu
(
iagp
->
wmap
[
extno
])
&
mask
))
{
if
(
!
(
le32_to_cpu
(
iagp
->
wmap
[
extno
])
&
mask
))
{
release_metapage
(
mp
);
jfs_error
(
ipimap
->
i_sb
,
jfs_error
(
ipimap
->
i_sb
,
"diUpdatePMap: the inode is not allocated in "
"diUpdatePMap: the inode is not allocated in "
"the working map"
);
"the working map"
);
return
-
EIO
;
return
-
EIO
;
}
}
if
((
le32_to_cpu
(
iagp
->
pmap
[
extno
])
&
mask
)
!=
0
)
{
if
((
le32_to_cpu
(
iagp
->
pmap
[
extno
])
&
mask
)
!=
0
)
{
release_metapage
(
mp
);
jfs_error
(
ipimap
->
i_sb
,
jfs_error
(
ipimap
->
i_sb
,
"diUpdatePMap: the inode is not free in the "
"diUpdatePMap: the inode is not free in the "
"persistent map"
);
"persistent map"
);
...
...
fs/jfs/jfs_logmgr.c
View file @
ab7666d1
...
@@ -979,7 +979,6 @@ static int lmLogSync(struct jfs_log * log, int nosyncwait)
...
@@ -979,7 +979,6 @@ static int lmLogSync(struct jfs_log * log, int nosyncwait)
* We need to make sure all of the "written" metapages
* We need to make sure all of the "written" metapages
* actually make it to disk
* actually make it to disk
*/
*/
down
(
&
jfs_log_sem
);
list_for_each_entry
(
sbi
,
&
log
->
sb_list
,
log_list
)
{
list_for_each_entry
(
sbi
,
&
log
->
sb_list
,
log_list
)
{
filemap_fdatawrite
(
sbi
->
ipbmap
->
i_mapping
);
filemap_fdatawrite
(
sbi
->
ipbmap
->
i_mapping
);
filemap_fdatawrite
(
sbi
->
ipimap
->
i_mapping
);
filemap_fdatawrite
(
sbi
->
ipimap
->
i_mapping
);
...
@@ -990,7 +989,6 @@ static int lmLogSync(struct jfs_log * log, int nosyncwait)
...
@@ -990,7 +989,6 @@ static int lmLogSync(struct jfs_log * log, int nosyncwait)
filemap_fdatawait
(
sbi
->
ipimap
->
i_mapping
);
filemap_fdatawait
(
sbi
->
ipimap
->
i_mapping
);
filemap_fdatawait
(
sbi
->
sb
->
s_bdev
->
bd_inode
->
i_mapping
);
filemap_fdatawait
(
sbi
->
sb
->
s_bdev
->
bd_inode
->
i_mapping
);
}
}
up
(
&
jfs_log_sem
);
lrd
.
logtid
=
0
;
lrd
.
logtid
=
0
;
lrd
.
backchain
=
0
;
lrd
.
backchain
=
0
;
...
@@ -1151,8 +1149,10 @@ int lmLogOpen(struct super_block *sb)
...
@@ -1151,8 +1149,10 @@ int lmLogOpen(struct super_block *sb)
goto
shutdown
;
goto
shutdown
;
journal_found:
journal_found:
LOG_LOCK
(
log
);
list_add
(
&
sbi
->
log_list
,
&
log
->
sb_list
);
list_add
(
&
sbi
->
log_list
,
&
log
->
sb_list
);
sbi
->
log
=
log
;
sbi
->
log
=
log
;
LOG_UNLOCK
(
log
);
up
(
&
jfs_log_sem
);
up
(
&
jfs_log_sem
);
return
0
;
return
0
;
...
@@ -1237,8 +1237,10 @@ static int open_dummy_log(struct super_block *sb)
...
@@ -1237,8 +1237,10 @@ static int open_dummy_log(struct super_block *sb)
}
}
}
}
LOG_LOCK
(
dummy_log
);
list_add
(
&
JFS_SBI
(
sb
)
->
log_list
,
&
dummy_log
->
sb_list
);
list_add
(
&
JFS_SBI
(
sb
)
->
log_list
,
&
dummy_log
->
sb_list
);
JFS_SBI
(
sb
)
->
log
=
dummy_log
;
JFS_SBI
(
sb
)
->
log
=
dummy_log
;
LOG_UNLOCK
(
dummy_log
);
up
(
&
jfs_log_sem
);
up
(
&
jfs_log_sem
);
return
0
;
return
0
;
...
@@ -1469,7 +1471,9 @@ int lmLogClose(struct super_block *sb)
...
@@ -1469,7 +1471,9 @@ int lmLogClose(struct super_block *sb)
jfs_info
(
"lmLogClose: log:0x%p"
,
log
);
jfs_info
(
"lmLogClose: log:0x%p"
,
log
);
down
(
&
jfs_log_sem
);
down
(
&
jfs_log_sem
);
LOG_LOCK
(
log
);
list_del
(
&
sbi
->
log_list
);
list_del
(
&
sbi
->
log_list
);
LOG_UNLOCK
(
log
);
sbi
->
log
=
NULL
;
sbi
->
log
=
NULL
;
/*
/*
...
...
fs/jfs/jfs_txnmgr.c
View file @
ab7666d1
...
@@ -1356,9 +1356,6 @@ static int txLog(struct jfs_log * log, struct tblock * tblk, struct commit * cd)
...
@@ -1356,9 +1356,6 @@ static int txLog(struct jfs_log * log, struct tblock * tblk, struct commit * cd)
lrd
->
log
.
redopage
.
fileset
=
cpu_to_le32
(
JFS_IP
(
ip
)
->
fileset
);
lrd
->
log
.
redopage
.
fileset
=
cpu_to_le32
(
JFS_IP
(
ip
)
->
fileset
);
lrd
->
log
.
redopage
.
inode
=
cpu_to_le32
(
ip
->
i_ino
);
lrd
->
log
.
redopage
.
inode
=
cpu_to_le32
(
ip
->
i_ino
);
if
(
tlck
->
mp
)
hold_metapage
(
tlck
->
mp
,
0
);
/* write log record of page from the tlock */
/* write log record of page from the tlock */
switch
(
tlck
->
type
&
tlckTYPE
)
{
switch
(
tlck
->
type
&
tlckTYPE
)
{
case
tlckXTREE
:
case
tlckXTREE
:
...
@@ -1384,8 +1381,6 @@ static int txLog(struct jfs_log * log, struct tblock * tblk, struct commit * cd)
...
@@ -1384,8 +1381,6 @@ static int txLog(struct jfs_log * log, struct tblock * tblk, struct commit * cd)
default:
default:
jfs_err
(
"UFO tlock:0x%p"
,
tlck
);
jfs_err
(
"UFO tlock:0x%p"
,
tlck
);
}
}
if
(
tlck
->
mp
)
release_metapage
(
tlck
->
mp
);
}
}
return
rc
;
return
rc
;
...
@@ -1535,6 +1530,7 @@ static int dataLog(struct jfs_log * log, struct tblock * tblk, struct lrd * lrd,
...
@@ -1535,6 +1530,7 @@ static int dataLog(struct jfs_log * log, struct tblock * tblk, struct lrd * lrd,
* the last entry, so don't bother logging this
* the last entry, so don't bother logging this
*/
*/
mp
->
lid
=
0
;
mp
->
lid
=
0
;
hold_metapage
(
mp
,
0
);
atomic_dec
(
&
mp
->
nohomeok
);
atomic_dec
(
&
mp
->
nohomeok
);
discard_metapage
(
mp
);
discard_metapage
(
mp
);
tlck
->
mp
=
0
;
tlck
->
mp
=
0
;
...
...
fs/jfs/jfs_xtree.c
View file @
ab7666d1
This diff is collapsed.
Click to expand it.
fs/super.c
View file @
ab7666d1
...
@@ -636,7 +636,7 @@ struct super_block *get_sb_bdev(struct file_system_type *fs_type,
...
@@ -636,7 +636,7 @@ struct super_block *get_sb_bdev(struct file_system_type *fs_type,
char
b
[
BDEVNAME_SIZE
];
char
b
[
BDEVNAME_SIZE
];
s
->
s_flags
=
flags
;
s
->
s_flags
=
flags
;
str
n
cpy
(
s
->
s_id
,
bdevname
(
bdev
,
b
),
sizeof
(
s
->
s_id
));
str
l
cpy
(
s
->
s_id
,
bdevname
(
bdev
,
b
),
sizeof
(
s
->
s_id
));
s
->
s_old_blocksize
=
block_size
(
bdev
);
s
->
s_old_blocksize
=
block_size
(
bdev
);
sb_set_blocksize
(
s
,
s
->
s_old_blocksize
);
sb_set_blocksize
(
s
,
s
->
s_old_blocksize
);
error
=
fill_super
(
s
,
data
,
flags
&
MS_VERBOSE
?
1
:
0
);
error
=
fill_super
(
s
,
data
,
flags
&
MS_VERBOSE
?
1
:
0
);
...
...
include/asm-x86_64/pci.h
View file @
ab7666d1
...
@@ -49,7 +49,7 @@ struct pci_dev;
...
@@ -49,7 +49,7 @@ struct pci_dev;
extern
int
iommu_setup
(
char
*
opt
);
extern
int
iommu_setup
(
char
*
opt
);
extern
dma_addr_t
bad_dma_address
;
extern
dma_addr_t
bad_dma_address
;
#define pci_dma_error(x) ((x) == bad_dma_address)
#define pci_dma_
mapping_
error(x) ((x) == bad_dma_address)
/* Allocate and map kernel buffer using consistent mode DMA for a device.
/* Allocate and map kernel buffer using consistent mode DMA for a device.
* hwdev should be valid struct pci_dev pointer for PCI devices,
* hwdev should be valid struct pci_dev pointer for PCI devices,
...
...
net/ipv4/Kconfig
View file @
ab7666d1
...
@@ -287,25 +287,6 @@ config ARPD
...
@@ -287,25 +287,6 @@ config ARPD
and you should also say Y to "Kernel/User network link driver",
and you should also say Y to "Kernel/User network link driver",
below. If unsure, say N.
below. If unsure, say N.
config INET_ECN
bool "IP: TCP Explicit Congestion Notification support"
depends on INET
---help---
Explicit Congestion Notification (ECN) allows routers to notify
clients about network congestion, resulting in fewer dropped packets
and increased network performance. This option adds ECN support to
the Linux kernel, as well as a sysctl (/proc/sys/net/ipv4/tcp_ecn)
which allows ECN support to be disabled at runtime.
Note that, on the Internet, there are many broken firewalls which
refuse connections from ECN-enabled machines, and it may be a while
before these firewalls are fixed. Until then, to access a site
behind such a firewall (some of which are major sites, at the time
of this writing) you will have to disable this option, either by
saying N now or by using the sysctl.
If in doubt, say N.
config SYN_COOKIES
config SYN_COOKIES
bool "IP: TCP syncookie support (disabled per default)"
bool "IP: TCP syncookie support (disabled per default)"
depends on INET
depends on INET
...
...
net/ipv4/ipvs/ip_vs_conn.c
View file @
ab7666d1
...
@@ -125,25 +125,27 @@ static unsigned int ip_vs_conn_hashkey(unsigned proto, __u32 addr, __u16 port)
...
@@ -125,25 +125,27 @@ static unsigned int ip_vs_conn_hashkey(unsigned proto, __u32 addr, __u16 port)
static
inline
int
ip_vs_conn_hash
(
struct
ip_vs_conn
*
cp
)
static
inline
int
ip_vs_conn_hash
(
struct
ip_vs_conn
*
cp
)
{
{
unsigned
hash
;
unsigned
hash
;
int
ret
;
if
(
cp
->
flags
&
IP_VS_CONN_F_HASHED
)
{
IP_VS_ERR
(
"ip_vs_conn_hash(): request for already hashed, "
"called from %p
\n
"
,
__builtin_return_address
(
0
));
return
0
;
}
/* Hash by protocol, client address and port */
/* Hash by protocol, client address and port */
hash
=
ip_vs_conn_hashkey
(
cp
->
protocol
,
cp
->
caddr
,
cp
->
cport
);
hash
=
ip_vs_conn_hashkey
(
cp
->
protocol
,
cp
->
caddr
,
cp
->
cport
);
ct_write_lock
(
hash
);
ct_write_lock
(
hash
);
list_add
(
&
cp
->
c_list
,
&
ip_vs_conn_tab
[
hash
]);
if
(
!
(
cp
->
flags
&
IP_VS_CONN_F_HASHED
))
{
cp
->
flags
|=
IP_VS_CONN_F_HASHED
;
list_add
(
&
cp
->
c_list
,
&
ip_vs_conn_tab
[
hash
]);
atomic_inc
(
&
cp
->
refcnt
);
cp
->
flags
|=
IP_VS_CONN_F_HASHED
;
atomic_inc
(
&
cp
->
refcnt
);
ret
=
1
;
}
else
{
IP_VS_ERR
(
"ip_vs_conn_hash(): request for already hashed, "
"called from %p
\n
"
,
__builtin_return_address
(
0
));
ret
=
0
;
}
ct_write_unlock
(
hash
);
ct_write_unlock
(
hash
);
return
1
;
return
ret
;
}
}
...
@@ -154,24 +156,24 @@ static inline int ip_vs_conn_hash(struct ip_vs_conn *cp)
...
@@ -154,24 +156,24 @@ static inline int ip_vs_conn_hash(struct ip_vs_conn *cp)
static
inline
int
ip_vs_conn_unhash
(
struct
ip_vs_conn
*
cp
)
static
inline
int
ip_vs_conn_unhash
(
struct
ip_vs_conn
*
cp
)
{
{
unsigned
hash
;
unsigned
hash
;
int
ret
;
if
(
!
(
cp
->
flags
&
IP_VS_CONN_F_HASHED
))
{
IP_VS_ERR
(
"ip_vs_conn_unhash(): request for unhash flagged, "
"called from %p
\n
"
,
__builtin_return_address
(
0
));
return
0
;
}
/* unhash it and decrease its reference counter */
/* unhash it and decrease its reference counter */
hash
=
ip_vs_conn_hashkey
(
cp
->
protocol
,
cp
->
caddr
,
cp
->
cport
);
hash
=
ip_vs_conn_hashkey
(
cp
->
protocol
,
cp
->
caddr
,
cp
->
cport
);
ct_write_lock
(
hash
);
ct_write_lock
(
hash
);
list_del
(
&
cp
->
c_list
);
if
(
cp
->
flags
&
IP_VS_CONN_F_HASHED
)
{
cp
->
flags
&=
~
IP_VS_CONN_F_HASHED
;
list_del
(
&
cp
->
c_list
);
atomic_dec
(
&
cp
->
refcnt
);
cp
->
flags
&=
~
IP_VS_CONN_F_HASHED
;
atomic_dec
(
&
cp
->
refcnt
);
ret
=
1
;
}
else
ret
=
0
;
ct_write_unlock
(
hash
);
ct_write_unlock
(
hash
);
return
1
;
return
ret
;
}
}
...
@@ -285,12 +287,18 @@ void ip_vs_conn_put(struct ip_vs_conn *cp)
...
@@ -285,12 +287,18 @@ void ip_vs_conn_put(struct ip_vs_conn *cp)
*/
*/
void
ip_vs_conn_fill_cport
(
struct
ip_vs_conn
*
cp
,
__u16
cport
)
void
ip_vs_conn_fill_cport
(
struct
ip_vs_conn
*
cp
,
__u16
cport
)
{
{
atomic_dec
(
&
ip_vs_conn_no_cport_cnt
);
if
(
ip_vs_conn_unhash
(
cp
))
{
ip_vs_conn_unhash
(
cp
);
spin_lock
(
&
cp
->
lock
);
cp
->
flags
&=
~
IP_VS_CONN_F_NO_CPORT
;
if
(
cp
->
flags
&
IP_VS_CONN_F_NO_CPORT
)
{
cp
->
cport
=
cport
;
atomic_dec
(
&
ip_vs_conn_no_cport_cnt
);
/* hash on new dport */
cp
->
flags
&=
~
IP_VS_CONN_F_NO_CPORT
;
ip_vs_conn_hash
(
cp
);
cp
->
cport
=
cport
;
}
spin_unlock
(
&
cp
->
lock
);
/* hash on new dport */
ip_vs_conn_hash
(
cp
);
}
}
}
...
@@ -457,11 +465,14 @@ int ip_vs_check_template(struct ip_vs_conn *ct)
...
@@ -457,11 +465,14 @@ int ip_vs_check_template(struct ip_vs_conn *ct)
/*
/*
* Invalidate the connection template
* Invalidate the connection template
*/
*/
ip_vs_conn_unhash
(
ct
);
if
(
ct
->
cport
)
{
ct
->
dport
=
65535
;
if
(
ip_vs_conn_unhash
(
ct
))
{
ct
->
vport
=
65535
;
ct
->
dport
=
65535
;
ct
->
cport
=
0
;
ct
->
vport
=
65535
;
ip_vs_conn_hash
(
ct
);
ct
->
cport
=
0
;
ip_vs_conn_hash
(
ct
);
}
}
/*
/*
* Simply decrease the refcnt of the template,
* Simply decrease the refcnt of the template,
...
@@ -493,7 +504,8 @@ static void ip_vs_conn_expire(unsigned long data)
...
@@ -493,7 +504,8 @@ static void ip_vs_conn_expire(unsigned long data)
/*
/*
* unhash it if it is hashed in the conn table
* unhash it if it is hashed in the conn table
*/
*/
ip_vs_conn_unhash
(
cp
);
if
(
!
ip_vs_conn_unhash
(
cp
))
goto
expire_later
;
/*
/*
* refcnt==1 implies I'm the only one referrer
* refcnt==1 implies I'm the only one referrer
...
...
net/ipv4/ipvs/ip_vs_ctl.c
View file @
ab7666d1
...
@@ -898,9 +898,16 @@ ip_vs_edit_dest(struct ip_vs_service *svc, struct ip_vs_dest_user *udest)
...
@@ -898,9 +898,16 @@ ip_vs_edit_dest(struct ip_vs_service *svc, struct ip_vs_dest_user *udest)
__ip_vs_update_dest
(
svc
,
dest
,
udest
);
__ip_vs_update_dest
(
svc
,
dest
,
udest
);
write_lock_bh
(
&
__ip_vs_svc_lock
);
/* Wait until all other svc users go away */
while
(
atomic_read
(
&
svc
->
usecnt
)
>
1
)
{};
/* call the update_service, because server weight may be changed */
/* call the update_service, because server weight may be changed */
svc
->
scheduler
->
update_service
(
svc
);
svc
->
scheduler
->
update_service
(
svc
);
write_unlock_bh
(
&
__ip_vs_svc_lock
);
LeaveFunction
(
2
);
LeaveFunction
(
2
);
return
0
;
return
0
;
...
...
net/ipv4/netfilter/Kconfig
View file @
ab7666d1
...
@@ -363,7 +363,7 @@ config IP_NF_NAT_LOCAL
...
@@ -363,7 +363,7 @@ config IP_NF_NAT_LOCAL
Please note that you will need a recent version (>= 1.2.6a)
Please note that you will need a recent version (>= 1.2.6a)
of the iptables userspace program in order to use this feature.
of the iptables userspace program in order to use this feature.
See
http://www.iptables.org/
for download instructions.
See
<http://www.iptables.org/>
for download instructions.
If unsure, say 'N'.
If unsure, say 'N'.
...
@@ -497,7 +497,7 @@ config IP_NF_TARGET_ULOG
...
@@ -497,7 +497,7 @@ config IP_NF_TARGET_ULOG
which can only be viewed through syslog.
which can only be viewed through syslog.
The apropriate userspace logging daemon (ulogd) may be obtained from
The apropriate userspace logging daemon (ulogd) may be obtained from
http://www.gnumonks.org/projects/ulogd
<http://www.gnumonks.org/projects/ulogd/>
To compile it as a module, choose M here. If unsure, say N.
To compile it as a module, choose M here. If unsure, say N.
...
...
net/ipv4/netfilter/ip_fw_compat_masq.c
View file @
ab7666d1
...
@@ -221,7 +221,7 @@ static const char *masq_proto_name(u_int16_t protonum)
...
@@ -221,7 +221,7 @@ static const char *masq_proto_name(u_int16_t protonum)
case
IPPROTO_TCP
:
return
"TCP"
;
case
IPPROTO_TCP
:
return
"TCP"
;
case
IPPROTO_UDP
:
return
"UDP"
;
case
IPPROTO_UDP
:
return
"UDP"
;
case
IPPROTO_ICMP
:
return
"ICMP"
;
case
IPPROTO_ICMP
:
return
"ICMP"
;
default:
return
"MORE-CAFF
IE
NE-FOR-RUSTY"
;
default:
return
"MORE-CAFF
EI
NE-FOR-RUSTY"
;
}
}
}
}
...
...
net/ipv4/netfilter/ipchains_core.c
View file @
ab7666d1
...
@@ -101,6 +101,7 @@
...
@@ -101,6 +101,7 @@
#include <linux/stat.h>
#include <linux/stat.h>
MODULE_LICENSE
(
"Dual BSD/GPL"
);
MODULE_LICENSE
(
"Dual BSD/GPL"
);
MODULE_AUTHOR
(
"Rusty Russell <rusty@rustcorp.com.au>"
);
MODULE_DESCRIPTION
(
"ipchains backwards compatibility layer"
);
MODULE_DESCRIPTION
(
"ipchains backwards compatibility layer"
);
/* Understanding locking in this code: (thanks to Alan Cox for using
/* Understanding locking in this code: (thanks to Alan Cox for using
...
...
net/ipv4/tcp_diag.c
View file @
ab7666d1
...
@@ -167,10 +167,8 @@ static int tcpdiag_fill(struct sk_buff *skb, struct sock *sk,
...
@@ -167,10 +167,8 @@ static int tcpdiag_fill(struct sk_buff *skb, struct sock *sk,
info
->
tcpi_snd_wscale
=
0
;
info
->
tcpi_snd_wscale
=
0
;
info
->
tcpi_rcv_wscale
=
0
;
info
->
tcpi_rcv_wscale
=
0
;
}
}
#ifdef CONFIG_INET_ECN
if
(
tp
->
ecn_flags
&
TCP_ECN_OK
)
if
(
tp
->
ecn_flags
&
TCP_ECN_OK
)
info
->
tcpi_options
|=
TCPI_OPT_ECN
;
info
->
tcpi_options
|=
TCPI_OPT_ECN
;
#endif
info
->
tcpi_rto
=
(
1000000
*
tp
->
rto
)
/
HZ
;
info
->
tcpi_rto
=
(
1000000
*
tp
->
rto
)
/
HZ
;
info
->
tcpi_ato
=
(
1000000
*
tp
->
ack
.
ato
)
/
HZ
;
info
->
tcpi_ato
=
(
1000000
*
tp
->
ack
.
ato
)
/
HZ
;
...
...
net/ipv4/tcp_input.c
View file @
ab7666d1
...
@@ -77,11 +77,7 @@ int sysctl_tcp_window_scaling = 1;
...
@@ -77,11 +77,7 @@ int sysctl_tcp_window_scaling = 1;
int
sysctl_tcp_sack
=
1
;
int
sysctl_tcp_sack
=
1
;
int
sysctl_tcp_fack
=
1
;
int
sysctl_tcp_fack
=
1
;
int
sysctl_tcp_reordering
=
TCP_FASTRETRANS_THRESH
;
int
sysctl_tcp_reordering
=
TCP_FASTRETRANS_THRESH
;
#ifdef CONFIG_INET_ECN
int
sysctl_tcp_ecn
=
1
;
#else
int
sysctl_tcp_ecn
;
int
sysctl_tcp_ecn
;
#endif
int
sysctl_tcp_dsack
=
1
;
int
sysctl_tcp_dsack
=
1
;
int
sysctl_tcp_app_win
=
31
;
int
sysctl_tcp_app_win
=
31
;
int
sysctl_tcp_adv_win_scale
=
2
;
int
sysctl_tcp_adv_win_scale
=
2
;
...
...
net/ipv6/ip6_output.c
View file @
ab7666d1
...
@@ -821,6 +821,9 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to, int offse
...
@@ -821,6 +821,9 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to, int offse
sk
->
sk_allocation
);
sk
->
sk_allocation
);
if
(
unlikely
(
np
->
cork
.
opt
==
NULL
))
if
(
unlikely
(
np
->
cork
.
opt
==
NULL
))
return
-
ENOBUFS
;
return
-
ENOBUFS
;
}
else
if
(
np
->
cork
.
opt
->
tot_len
<
opt
->
tot_len
)
{
printk
(
KERN_DEBUG
"ip6_append_data: invalid option length
\n
"
);
return
-
EINVAL
;
}
}
memcpy
(
np
->
cork
.
opt
,
opt
,
opt
->
tot_len
);
memcpy
(
np
->
cork
.
opt
,
opt
,
opt
->
tot_len
);
inet
->
cork
.
flags
|=
IPCORK_OPT
;
inet
->
cork
.
flags
|=
IPCORK_OPT
;
...
...
net/key/af_key.c
View file @
ab7666d1
...
@@ -1879,6 +1879,7 @@ static int pfkey_spdadd(struct sock *sk, struct sk_buff *skb, struct sadb_msg *h
...
@@ -1879,6 +1879,7 @@ static int pfkey_spdadd(struct sock *sk, struct sk_buff *skb, struct sadb_msg *h
err
=
-
EINVAL
;
err
=
-
EINVAL
;
goto
out
;
goto
out
;
}
}
xp
->
selector
.
family
=
xp
->
family
;
xp
->
selector
.
prefixlen_s
=
sa
->
sadb_address_prefixlen
;
xp
->
selector
.
prefixlen_s
=
sa
->
sadb_address_prefixlen
;
xp
->
selector
.
proto
=
pfkey_proto_to_xfrm
(
sa
->
sadb_address_proto
);
xp
->
selector
.
proto
=
pfkey_proto_to_xfrm
(
sa
->
sadb_address_proto
);
xp
->
selector
.
sport
=
((
struct
sockaddr_in
*
)(
sa
+
1
))
->
sin_port
;
xp
->
selector
.
sport
=
((
struct
sockaddr_in
*
)(
sa
+
1
))
->
sin_port
;
...
...
net/sched/sch_tbf.c
View file @
ab7666d1
...
@@ -62,7 +62,7 @@
...
@@ -62,7 +62,7 @@
Algorithm.
Algorithm.
----------
----------
Let N(t_i) be B/R initially and N(t) grow continuously with time as:
Let N(t_i) be B/R initially and N(t) grow continuously with time as:
N(t+delta) = min{B/R, N(t) + delta}
N(t+delta) = min{B/R, N(t) + delta}
...
@@ -146,15 +146,15 @@ static int tbf_enqueue(struct sk_buff *skb, struct Qdisc* sch)
...
@@ -146,15 +146,15 @@ static int tbf_enqueue(struct sk_buff *skb, struct Qdisc* sch)
if
(
sch
->
reshape_fail
==
NULL
||
sch
->
reshape_fail
(
skb
,
sch
))
if
(
sch
->
reshape_fail
==
NULL
||
sch
->
reshape_fail
(
skb
,
sch
))
#endif
#endif
kfree_skb
(
skb
);
kfree_skb
(
skb
);
return
NET_XMIT_DROP
;
return
NET_XMIT_DROP
;
}
}
if
((
ret
=
q
->
qdisc
->
enqueue
(
skb
,
q
->
qdisc
))
!=
0
)
{
if
((
ret
=
q
->
qdisc
->
enqueue
(
skb
,
q
->
qdisc
))
!=
0
)
{
sch
->
stats
.
drops
++
;
sch
->
stats
.
drops
++
;
return
ret
;
return
ret
;
}
}
sch
->
q
.
qlen
++
;
sch
->
q
.
qlen
++
;
sch
->
stats
.
bytes
+=
skb
->
len
;
sch
->
stats
.
bytes
+=
skb
->
len
;
sch
->
stats
.
packets
++
;
sch
->
stats
.
packets
++
;
...
@@ -165,10 +165,10 @@ static int tbf_requeue(struct sk_buff *skb, struct Qdisc* sch)
...
@@ -165,10 +165,10 @@ static int tbf_requeue(struct sk_buff *skb, struct Qdisc* sch)
{
{
struct
tbf_sched_data
*
q
=
(
struct
tbf_sched_data
*
)
sch
->
data
;
struct
tbf_sched_data
*
q
=
(
struct
tbf_sched_data
*
)
sch
->
data
;
int
ret
;
int
ret
;
if
((
ret
=
q
->
qdisc
->
ops
->
requeue
(
skb
,
q
->
qdisc
))
==
0
)
if
((
ret
=
q
->
qdisc
->
ops
->
requeue
(
skb
,
q
->
qdisc
))
==
0
)
sch
->
q
.
qlen
++
;
sch
->
q
.
qlen
++
;
return
ret
;
return
ret
;
}
}
...
@@ -176,7 +176,7 @@ static unsigned int tbf_drop(struct Qdisc* sch)
...
@@ -176,7 +176,7 @@ static unsigned int tbf_drop(struct Qdisc* sch)
{
{
struct
tbf_sched_data
*
q
=
(
struct
tbf_sched_data
*
)
sch
->
data
;
struct
tbf_sched_data
*
q
=
(
struct
tbf_sched_data
*
)
sch
->
data
;
unsigned
int
len
;
unsigned
int
len
;
if
((
len
=
q
->
qdisc
->
ops
->
drop
(
q
->
qdisc
))
!=
0
)
{
if
((
len
=
q
->
qdisc
->
ops
->
drop
(
q
->
qdisc
))
!=
0
)
{
sch
->
q
.
qlen
--
;
sch
->
q
.
qlen
--
;
sch
->
stats
.
drops
++
;
sch
->
stats
.
drops
++
;
...
@@ -196,7 +196,7 @@ static struct sk_buff *tbf_dequeue(struct Qdisc* sch)
...
@@ -196,7 +196,7 @@ static struct sk_buff *tbf_dequeue(struct Qdisc* sch)
{
{
struct
tbf_sched_data
*
q
=
(
struct
tbf_sched_data
*
)
sch
->
data
;
struct
tbf_sched_data
*
q
=
(
struct
tbf_sched_data
*
)
sch
->
data
;
struct
sk_buff
*
skb
;
struct
sk_buff
*
skb
;
skb
=
q
->
qdisc
->
dequeue
(
q
->
qdisc
);
skb
=
q
->
qdisc
->
dequeue
(
q
->
qdisc
);
if
(
skb
)
{
if
(
skb
)
{
...
@@ -204,7 +204,7 @@ static struct sk_buff *tbf_dequeue(struct Qdisc* sch)
...
@@ -204,7 +204,7 @@ static struct sk_buff *tbf_dequeue(struct Qdisc* sch)
long
toks
;
long
toks
;
long
ptoks
=
0
;
long
ptoks
=
0
;
unsigned
int
len
=
skb
->
len
;
unsigned
int
len
=
skb
->
len
;
PSCHED_GET_TIME
(
now
);
PSCHED_GET_TIME
(
now
);
toks
=
PSCHED_TDIFF_SAFE
(
now
,
q
->
t_c
,
q
->
buffer
,
0
);
toks
=
PSCHED_TDIFF_SAFE
(
now
,
q
->
t_c
,
q
->
buffer
,
0
);
...
@@ -248,13 +248,13 @@ static struct sk_buff *tbf_dequeue(struct Qdisc* sch)
...
@@ -248,13 +248,13 @@ static struct sk_buff *tbf_dequeue(struct Qdisc* sch)
This is the main idea of all FQ algorithms
This is the main idea of all FQ algorithms
(cf. CSZ, HPFQ, HFSC)
(cf. CSZ, HPFQ, HFSC)
*/
*/
if
(
q
->
qdisc
->
ops
->
requeue
(
skb
,
q
->
qdisc
)
!=
NET_XMIT_SUCCESS
)
{
if
(
q
->
qdisc
->
ops
->
requeue
(
skb
,
q
->
qdisc
)
!=
NET_XMIT_SUCCESS
)
{
/* When requeue fails skb is dropped */
/* When requeue fails skb is dropped */
sch
->
q
.
qlen
--
;
sch
->
q
.
qlen
--
;
sch
->
stats
.
drops
++
;
sch
->
stats
.
drops
++
;
}
}
sch
->
flags
|=
TCQ_F_THROTTLED
;
sch
->
flags
|=
TCQ_F_THROTTLED
;
sch
->
stats
.
overlimits
++
;
sch
->
stats
.
overlimits
++
;
}
}
...
@@ -279,24 +279,24 @@ static struct Qdisc *tbf_create_dflt_qdisc(struct net_device *dev, u32 limit)
...
@@ -279,24 +279,24 @@ static struct Qdisc *tbf_create_dflt_qdisc(struct net_device *dev, u32 limit)
struct
Qdisc
*
q
=
qdisc_create_dflt
(
dev
,
&
bfifo_qdisc_ops
);
struct
Qdisc
*
q
=
qdisc_create_dflt
(
dev
,
&
bfifo_qdisc_ops
);
struct
rtattr
*
rta
;
struct
rtattr
*
rta
;
int
ret
;
int
ret
;
if
(
q
)
{
if
(
q
)
{
rta
=
kmalloc
(
RTA_LENGTH
(
sizeof
(
struct
tc_fifo_qopt
)),
GFP_KERNEL
);
rta
=
kmalloc
(
RTA_LENGTH
(
sizeof
(
struct
tc_fifo_qopt
)),
GFP_KERNEL
);
if
(
rta
)
{
if
(
rta
)
{
rta
->
rta_type
=
RTM_NEWQDISC
;
rta
->
rta_type
=
RTM_NEWQDISC
;
rta
->
rta_len
=
RTA_LENGTH
(
sizeof
(
struct
tc_fifo_qopt
));
rta
->
rta_len
=
RTA_LENGTH
(
sizeof
(
struct
tc_fifo_qopt
));
((
struct
tc_fifo_qopt
*
)
RTA_DATA
(
rta
))
->
limit
=
limit
;
((
struct
tc_fifo_qopt
*
)
RTA_DATA
(
rta
))
->
limit
=
limit
;
ret
=
q
->
ops
->
change
(
q
,
rta
);
ret
=
q
->
ops
->
change
(
q
,
rta
);
kfree
(
rta
);
kfree
(
rta
);
if
(
ret
==
0
)
if
(
ret
==
0
)
return
q
;
return
q
;
}
}
qdisc_destroy
(
q
);
qdisc_destroy
(
q
);
}
}
return
NULL
;
return
NULL
;
}
}
static
int
tbf_change
(
struct
Qdisc
*
sch
,
struct
rtattr
*
opt
)
static
int
tbf_change
(
struct
Qdisc
*
sch
,
struct
rtattr
*
opt
)
...
@@ -340,7 +340,7 @@ static int tbf_change(struct Qdisc* sch, struct rtattr *opt)
...
@@ -340,7 +340,7 @@ static int tbf_change(struct Qdisc* sch, struct rtattr *opt)
}
}
if
(
max_size
<
0
)
if
(
max_size
<
0
)
goto
done
;
goto
done
;
if
(
q
->
qdisc
==
&
noop_qdisc
)
{
if
(
q
->
qdisc
==
&
noop_qdisc
)
{
if
((
child
=
tbf_create_dflt_qdisc
(
sch
->
dev
,
qopt
->
limit
))
==
NULL
)
if
((
child
=
tbf_create_dflt_qdisc
(
sch
->
dev
,
qopt
->
limit
))
==
NULL
)
goto
done
;
goto
done
;
...
@@ -369,17 +369,17 @@ static int tbf_change(struct Qdisc* sch, struct rtattr *opt)
...
@@ -369,17 +369,17 @@ static int tbf_change(struct Qdisc* sch, struct rtattr *opt)
static
int
tbf_init
(
struct
Qdisc
*
sch
,
struct
rtattr
*
opt
)
static
int
tbf_init
(
struct
Qdisc
*
sch
,
struct
rtattr
*
opt
)
{
{
struct
tbf_sched_data
*
q
=
(
struct
tbf_sched_data
*
)
sch
->
data
;
struct
tbf_sched_data
*
q
=
(
struct
tbf_sched_data
*
)
sch
->
data
;
if
(
opt
==
NULL
)
if
(
opt
==
NULL
)
return
-
EINVAL
;
return
-
EINVAL
;
PSCHED_GET_TIME
(
q
->
t_c
);
PSCHED_GET_TIME
(
q
->
t_c
);
init_timer
(
&
q
->
wd_timer
);
init_timer
(
&
q
->
wd_timer
);
q
->
wd_timer
.
function
=
tbf_watchdog
;
q
->
wd_timer
.
function
=
tbf_watchdog
;
q
->
wd_timer
.
data
=
(
unsigned
long
)
sch
;
q
->
wd_timer
.
data
=
(
unsigned
long
)
sch
;
q
->
qdisc
=
&
noop_qdisc
;
q
->
qdisc
=
&
noop_qdisc
;
return
tbf_change
(
sch
,
opt
);
return
tbf_change
(
sch
,
opt
);
}
}
...
@@ -393,7 +393,7 @@ static void tbf_destroy(struct Qdisc *sch)
...
@@ -393,7 +393,7 @@ static void tbf_destroy(struct Qdisc *sch)
qdisc_put_rtab
(
q
->
P_tab
);
qdisc_put_rtab
(
q
->
P_tab
);
if
(
q
->
R_tab
)
if
(
q
->
R_tab
)
qdisc_put_rtab
(
q
->
R_tab
);
qdisc_put_rtab
(
q
->
R_tab
);
qdisc_destroy
(
q
->
qdisc
);
qdisc_destroy
(
q
->
qdisc
);
q
->
qdisc
=
&
noop_qdisc
;
q
->
qdisc
=
&
noop_qdisc
;
}
}
...
@@ -404,10 +404,10 @@ static int tbf_dump(struct Qdisc *sch, struct sk_buff *skb)
...
@@ -404,10 +404,10 @@ static int tbf_dump(struct Qdisc *sch, struct sk_buff *skb)
unsigned
char
*
b
=
skb
->
tail
;
unsigned
char
*
b
=
skb
->
tail
;
struct
rtattr
*
rta
;
struct
rtattr
*
rta
;
struct
tc_tbf_qopt
opt
;
struct
tc_tbf_qopt
opt
;
rta
=
(
struct
rtattr
*
)
b
;
rta
=
(
struct
rtattr
*
)
b
;
RTA_PUT
(
skb
,
TCA_OPTIONS
,
0
,
NULL
);
RTA_PUT
(
skb
,
TCA_OPTIONS
,
0
,
NULL
);
opt
.
limit
=
q
->
limit
;
opt
.
limit
=
q
->
limit
;
opt
.
rate
=
q
->
R_tab
->
rate
;
opt
.
rate
=
q
->
R_tab
->
rate
;
if
(
q
->
P_tab
)
if
(
q
->
P_tab
)
...
@@ -427,15 +427,14 @@ static int tbf_dump(struct Qdisc *sch, struct sk_buff *skb)
...
@@ -427,15 +427,14 @@ static int tbf_dump(struct Qdisc *sch, struct sk_buff *skb)
}
}
static
int
tbf_dump_class
(
struct
Qdisc
*
sch
,
unsigned
long
cl
,
static
int
tbf_dump_class
(
struct
Qdisc
*
sch
,
unsigned
long
cl
,
struct
sk_buff
*
skb
,
struct
tcmsg
*
tcm
)
struct
sk_buff
*
skb
,
struct
tcmsg
*
tcm
)
{
{
struct
tbf_sched_data
*
q
=
(
struct
tbf_sched_data
*
)
sch
->
data
;
struct
tbf_sched_data
*
q
=
(
struct
tbf_sched_data
*
)
sch
->
data
;
if
(
cl
!=
1
)
/* only one class */
if
(
cl
!=
1
)
/* only one class */
return
-
ENOENT
;
return
-
ENOENT
;
tcm
->
tcm_parent
=
TC_H_ROOT
;
tcm
->
tcm_handle
|=
TC_H_MIN
(
1
);
tcm
->
tcm_handle
=
1
;
tcm
->
tcm_info
=
q
->
qdisc
->
handle
;
tcm
->
tcm_info
=
q
->
qdisc
->
handle
;
return
0
;
return
0
;
...
@@ -449,12 +448,12 @@ static int tbf_graft(struct Qdisc *sch, unsigned long arg, struct Qdisc *new,
...
@@ -449,12 +448,12 @@ static int tbf_graft(struct Qdisc *sch, unsigned long arg, struct Qdisc *new,
if
(
new
==
NULL
)
if
(
new
==
NULL
)
new
=
&
noop_qdisc
;
new
=
&
noop_qdisc
;
sch_tree_lock
(
sch
);
sch_tree_lock
(
sch
);
*
old
=
xchg
(
&
q
->
qdisc
,
new
);
*
old
=
xchg
(
&
q
->
qdisc
,
new
);
qdisc_reset
(
*
old
);
qdisc_reset
(
*
old
);
sch
->
q
.
qlen
=
0
;
sch
->
q
.
qlen
=
0
;
sch_tree_unlock
(
sch
);
sch_tree_unlock
(
sch
);
return
0
;
return
0
;
}
}
...
@@ -474,7 +473,7 @@ static void tbf_put(struct Qdisc *sch, unsigned long arg)
...
@@ -474,7 +473,7 @@ static void tbf_put(struct Qdisc *sch, unsigned long arg)
}
}
static
int
tbf_change_class
(
struct
Qdisc
*
sch
,
u32
classid
,
u32
parentid
,
static
int
tbf_change_class
(
struct
Qdisc
*
sch
,
u32
classid
,
u32
parentid
,
struct
rtattr
**
tca
,
unsigned
long
*
arg
)
struct
rtattr
**
tca
,
unsigned
long
*
arg
)
{
{
return
-
ENOSYS
;
return
-
ENOSYS
;
}
}
...
@@ -486,11 +485,9 @@ static int tbf_delete(struct Qdisc *sch, unsigned long arg)
...
@@ -486,11 +485,9 @@ static int tbf_delete(struct Qdisc *sch, unsigned long arg)
static
void
tbf_walk
(
struct
Qdisc
*
sch
,
struct
qdisc_walker
*
walker
)
static
void
tbf_walk
(
struct
Qdisc
*
sch
,
struct
qdisc_walker
*
walker
)
{
{
struct
tbf_sched_data
*
q
=
(
struct
tbf_sched_data
*
)
sch
->
data
;
if
(
!
walker
->
stop
)
{
if
(
!
walker
->
stop
)
{
if
(
walker
->
count
>=
walker
->
skip
)
if
(
walker
->
count
>=
walker
->
skip
)
if
(
walker
->
fn
(
sch
,
(
unsigned
long
)
q
,
walker
)
<
0
)
{
if
(
walker
->
fn
(
sch
,
1
,
walker
)
<
0
)
{
walker
->
stop
=
1
;
walker
->
stop
=
1
;
return
;
return
;
}
}
...
@@ -500,7 +497,7 @@ static void tbf_walk(struct Qdisc *sch, struct qdisc_walker *walker)
...
@@ -500,7 +497,7 @@ static void tbf_walk(struct Qdisc *sch, struct qdisc_walker *walker)
static
struct
Qdisc_class_ops
tbf_class_ops
=
static
struct
Qdisc_class_ops
tbf_class_ops
=
{
{
.
graft
=
tbf_graft
,
.
graft
=
tbf_graft
,
.
leaf
=
tbf_leaf
,
.
leaf
=
tbf_leaf
,
.
get
=
tbf_get
,
.
get
=
tbf_get
,
.
put
=
tbf_put
,
.
put
=
tbf_put
,
...
@@ -532,7 +529,7 @@ static int __init tbf_module_init(void)
...
@@ -532,7 +529,7 @@ static int __init tbf_module_init(void)
return
register_qdisc
(
&
tbf_qdisc_ops
);
return
register_qdisc
(
&
tbf_qdisc_ops
);
}
}
static
void
__exit
tbf_module_exit
(
void
)
static
void
__exit
tbf_module_exit
(
void
)
{
{
unregister_qdisc
(
&
tbf_qdisc_ops
);
unregister_qdisc
(
&
tbf_qdisc_ops
);
}
}
...
...
net/sctp/Kconfig
View file @
ab7666d1
...
@@ -5,14 +5,9 @@
...
@@ -5,14 +5,9 @@
menu "SCTP Configuration (EXPERIMENTAL)"
menu "SCTP Configuration (EXPERIMENTAL)"
depends on INET && EXPERIMENTAL
depends on INET && EXPERIMENTAL
config IPV6_SCTP__
tristate
default y if IPV6=n
default IPV6 if IPV6
config IP_SCTP
config IP_SCTP
tristate "The SCTP Protocol (EXPERIMENTAL)"
tristate "The SCTP Protocol (EXPERIMENTAL)"
depends on IPV6
_SCTP__
depends on IPV6
|| IPV6=n
---help---
---help---
Stream Control Transmission Protocol
Stream Control Transmission Protocol
...
@@ -61,6 +56,7 @@ config SCTP_DBG_OBJCNT
...
@@ -61,6 +56,7 @@ config SCTP_DBG_OBJCNT
choice
choice
prompt "SCTP: Cookie HMAC Algorithm"
prompt "SCTP: Cookie HMAC Algorithm"
depends on IP_SCTP
depends on IP_SCTP
default SCTP_HMAC_MD5
help
help
HMAC algorithm to be used during association initialization. It
HMAC algorithm to be used during association initialization. It
is strongly recommended to use HMAC-SHA1 or HMAC-MD5. See
is strongly recommended to use HMAC-SHA1 or HMAC-MD5. See
...
...
net/sctp/sm_make_chunk.c
View file @
ab7666d1
...
@@ -516,7 +516,7 @@ struct sctp_chunk *sctp_make_datafrag_empty(struct sctp_association *asoc,
...
@@ -516,7 +516,7 @@ struct sctp_chunk *sctp_make_datafrag_empty(struct sctp_association *asoc,
*/
*/
dp
.
tsn
=
0
;
dp
.
tsn
=
0
;
dp
.
stream
=
htons
(
sinfo
->
sinfo_stream
);
dp
.
stream
=
htons
(
sinfo
->
sinfo_stream
);
dp
.
ppid
=
htonl
(
sinfo
->
sinfo_ppid
)
;
dp
.
ppid
=
sinfo
->
sinfo_ppid
;
/* Set the flags for an unordered send. */
/* Set the flags for an unordered send. */
if
(
sinfo
->
sinfo_flags
&
MSG_UNORDERED
)
{
if
(
sinfo
->
sinfo_flags
&
MSG_UNORDERED
)
{
...
...
net/sctp/ulpevent.c
View file @
ab7666d1
...
@@ -663,7 +663,7 @@ struct sctp_ulpevent *sctp_ulpevent_make_rcvmsg(struct sctp_association *asoc,
...
@@ -663,7 +663,7 @@ struct sctp_ulpevent *sctp_ulpevent_make_rcvmsg(struct sctp_association *asoc,
* for and this information is passed opaquely by the SCTP stack from
* for and this information is passed opaquely by the SCTP stack from
* one end to the other.
* one end to the other.
*/
*/
info
->
sinfo_ppid
=
ntohl
(
chunk
->
subh
.
data_hdr
->
ppid
)
;
info
->
sinfo_ppid
=
chunk
->
subh
.
data_hdr
->
ppid
;
/* Sockets API Extensions for SCTP
/* Sockets API Extensions for SCTP
* Section 5.2.2 SCTP Header Information Structure (SCTP_SNDRCV)
* Section 5.2.2 SCTP Header Information Structure (SCTP_SNDRCV)
...
...
net/xfrm/xfrm_user.c
View file @
ab7666d1
...
@@ -674,6 +674,7 @@ static int copy_to_user_tmpl(struct xfrm_policy *xp, struct sk_buff *skb)
...
@@ -674,6 +674,7 @@ static int copy_to_user_tmpl(struct xfrm_policy *xp, struct sk_buff *skb)
struct
xfrm_tmpl
*
kp
=
&
xp
->
xfrm_vec
[
i
];
struct
xfrm_tmpl
*
kp
=
&
xp
->
xfrm_vec
[
i
];
memcpy
(
&
up
->
id
,
&
kp
->
id
,
sizeof
(
up
->
id
));
memcpy
(
&
up
->
id
,
&
kp
->
id
,
sizeof
(
up
->
id
));
up
->
family
=
xp
->
family
;
memcpy
(
&
up
->
saddr
,
&
kp
->
saddr
,
sizeof
(
up
->
saddr
));
memcpy
(
&
up
->
saddr
,
&
kp
->
saddr
,
sizeof
(
up
->
saddr
));
up
->
reqid
=
kp
->
reqid
;
up
->
reqid
=
kp
->
reqid
;
up
->
mode
=
kp
->
mode
;
up
->
mode
=
kp
->
mode
;
...
...
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