Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
cb650116
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
cb650116
编写于
19年前
作者:
J
Jeff Garzik
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master'
上级
7bbaa754
741b2252
无相关合并请求
变更
48
展开全部
隐藏空白更改
内联
并排
Showing
48 changed file
with
614 addition
and
413 deletion
+614
-413
Documentation/kernel-parameters.txt
Documentation/kernel-parameters.txt
+260
-236
Makefile
Makefile
+1
-1
arch/arm/mach-pxa/corgi_lcd.c
arch/arm/mach-pxa/corgi_lcd.c
+2
-0
arch/ppc64/kernel/mpic.c
arch/ppc64/kernel/mpic.c
+2
-2
arch/um/include/sysdep-i386/thread.h
arch/um/include/sysdep-i386/thread.h
+1
-1
arch/um/include/sysdep-x86_64/thread.h
arch/um/include/sysdep-x86_64/thread.h
+1
-1
drivers/char/drm/radeon_cp.c
drivers/char/drm/radeon_cp.c
+6
-5
drivers/cpufreq/cpufreq_conservative.c
drivers/cpufreq/cpufreq_conservative.c
+3
-3
drivers/infiniband/hw/mthca/mthca_eq.c
drivers/infiniband/hw/mthca/mthca_eq.c
+11
-10
drivers/md/md.c
drivers/md/md.c
+6
-4
drivers/media/video/Kconfig
drivers/media/video/Kconfig
+0
-1
drivers/pci/quirks.c
drivers/pci/quirks.c
+88
-13
drivers/pci/setup-bus.c
drivers/pci/setup-bus.c
+1
-1
drivers/scsi/NCR5380.c
drivers/scsi/NCR5380.c
+1
-1
drivers/scsi/aacraid/aacraid.h
drivers/scsi/aacraid/aacraid.h
+1
-1
drivers/scsi/qla2xxx/qla_os.c
drivers/scsi/qla2xxx/qla_os.c
+2
-1
drivers/scsi/scsi_devinfo.c
drivers/scsi/scsi_devinfo.c
+1
-0
drivers/scsi/scsi_lib.c
drivers/scsi/scsi_lib.c
+4
-3
drivers/scsi/scsi_transport_fc.c
drivers/scsi/scsi_transport_fc.c
+10
-3
drivers/serial/8250_pci.c
drivers/serial/8250_pci.c
+25
-1
drivers/video/fbsysfs.c
drivers/video/fbsysfs.c
+8
-0
fs/aio.c
fs/aio.c
+6
-0
fs/hfsplus/super.c
fs/hfsplus/super.c
+1
-0
fs/inotify.c
fs/inotify.c
+1
-0
include/asm-alpha/atomic.h
include/asm-alpha/atomic.h
+10
-4
include/asm-alpha/barrier.h
include/asm-alpha/barrier.h
+34
-0
include/asm-alpha/system.h
include/asm-alpha/system.h
+1
-30
include/asm-arm/bitops.h
include/asm-arm/bitops.h
+0
-1
include/asm-x86_64/pci.h
include/asm-x86_64/pci.h
+3
-3
include/linux/idr.h
include/linux/idr.h
+1
-0
include/linux/pci_ids.h
include/linux/pci_ids.h
+2
-0
include/net/ax25.h
include/net/ax25.h
+1
-1
include/net/llc_pdu.h
include/net/llc_pdu.h
+3
-1
kernel/posix-cpu-timers.c
kernel/posix-cpu-timers.c
+52
-42
kernel/sched.c
kernel/sched.c
+1
-0
lib/idr.c
lib/idr.c
+13
-0
mm/page_alloc.c
mm/page_alloc.c
+2
-0
net/802/tr.c
net/802/tr.c
+3
-2
net/core/neighbour.c
net/core/neighbour.c
+16
-32
net/core/skbuff.c
net/core/skbuff.c
+6
-0
net/core/wireless.c
net/core/wireless.c
+7
-2
net/ipv4/ip_output.c
net/ipv4/ip_output.c
+3
-0
net/ipv4/tcp_input.c
net/ipv4/tcp_input.c
+1
-0
net/ipv6/ip6_flowlabel.c
net/ipv6/ip6_flowlabel.c
+1
-1
net/sunrpc/svcsock.c
net/sunrpc/svcsock.c
+1
-1
security/selinux/selinuxfs.c
security/selinux/selinuxfs.c
+3
-1
security/selinux/ss/policydb.c
security/selinux/ss/policydb.c
+4
-2
sound/core/init.c
sound/core/init.c
+4
-2
未找到文件。
Documentation/kernel-parameters.txt
浏览文件 @
cb650116
此差异已折叠。
点击以展开。
Makefile
浏览文件 @
cb650116
VERSION
=
2
PATCHLEVEL
=
6
SUBLEVEL
=
14
EXTRAVERSION
=
-rc5
EXTRAVERSION
=
NAME
=
Affluent Albatross
# *DOCUMENTATION*
...
...
This diff is collapsed.
Click to expand it.
arch/arm/mach-pxa/corgi_lcd.c
浏览文件 @
cb650116
...
...
@@ -488,6 +488,7 @@ static int is_pxafb_device(struct device * dev, void * data)
unsigned
long
spitz_get_hsync_len
(
void
)
{
#ifdef CONFIG_FB_PXA
if
(
!
spitz_pxafb_dev
)
{
spitz_pxafb_dev
=
bus_find_device
(
&
platform_bus_type
,
NULL
,
NULL
,
is_pxafb_device
);
if
(
!
spitz_pxafb_dev
)
...
...
@@ -496,6 +497,7 @@ unsigned long spitz_get_hsync_len(void)
if
(
!
get_hsync_time
)
get_hsync_time
=
symbol_get
(
pxafb_get_hsync_time
);
if
(
!
get_hsync_time
)
#endif
return
0
;
return
pxafb_get_hsync_time
(
spitz_pxafb_dev
);
...
...
This diff is collapsed.
Click to expand it.
arch/ppc64/kernel/mpic.c
浏览文件 @
cb650116
...
...
@@ -506,8 +506,8 @@ struct mpic * __init mpic_alloc(unsigned long phys_addr,
mpic
->
senses_count
=
senses_count
;
/* Map the global registers */
mpic
->
gregs
=
ioremap
(
phys_addr
+
MPIC_GREG_BASE
,
0x
1
000
);
mpic
->
tmregs
=
mpic
->
gregs
+
(
MPIC_TIMER_BASE
>>
2
);
mpic
->
gregs
=
ioremap
(
phys_addr
+
MPIC_GREG_BASE
,
0x
2
000
);
mpic
->
tmregs
=
mpic
->
gregs
+
(
(
MPIC_TIMER_BASE
-
MPIC_GREG_BASE
)
>>
2
);
BUG_ON
(
mpic
->
gregs
==
NULL
);
/* Reset */
...
...
This diff is collapsed.
Click to expand it.
arch/um/include/sysdep-i386/thread.h
浏览文件 @
cb650116
...
...
@@ -4,7 +4,7 @@
#include <kern_constants.h>
#define TASK_DEBUGREGS(task) ((unsigned long *) &(((char *) (task))[HOST_TASK_DEBUGREGS]))
#ifdef CONFIG_MODE_TT
#ifdef
UML_
CONFIG_MODE_TT
#define TASK_EXTERN_PID(task) *((int *) &(((char *) (task))[HOST_TASK_EXTERN_PID]))
#endif
...
...
This diff is collapsed.
Click to expand it.
arch/um/include/sysdep-x86_64/thread.h
浏览文件 @
cb650116
...
...
@@ -3,7 +3,7 @@
#include <kern_constants.h>
#ifdef CONFIG_MODE_TT
#ifdef
UML_
CONFIG_MODE_TT
#define TASK_EXTERN_PID(task) *((int *) &(((char *) (task))[HOST_TASK_EXTERN_PID]))
#endif
...
...
This diff is collapsed.
Click to expand it.
drivers/char/drm/radeon_cp.c
浏览文件 @
cb650116
...
...
@@ -1133,10 +1133,10 @@ static void radeon_cp_init_ring_buffer( drm_device_t *dev,
ring_start
=
(
dev_priv
->
cp_ring
->
offset
-
dev
->
agp
->
base
+
dev_priv
->
gart_vm_start
);
}
else
}
else
#endif
ring_start
=
(
dev_priv
->
cp_ring
->
offset
-
dev
->
sg
->
handle
-
(
unsigned
long
)
dev
->
sg
->
virtual
+
dev_priv
->
gart_vm_start
);
RADEON_WRITE
(
RADEON_CP_RB_BASE
,
ring_start
);
...
...
@@ -1164,7 +1164,8 @@ static void radeon_cp_init_ring_buffer( drm_device_t *dev,
drm_sg_mem_t
*
entry
=
dev
->
sg
;
unsigned
long
tmp_ofs
,
page_ofs
;
tmp_ofs
=
dev_priv
->
ring_rptr
->
offset
-
dev
->
sg
->
handle
;
tmp_ofs
=
dev_priv
->
ring_rptr
->
offset
-
(
unsigned
long
)
dev
->
sg
->
virtual
;
page_ofs
=
tmp_ofs
>>
PAGE_SHIFT
;
RADEON_WRITE
(
RADEON_CP_RB_RPTR_ADDR
,
...
...
@@ -1491,8 +1492,8 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init )
else
#endif
dev_priv
->
gart_buffers_offset
=
(
dev
->
agp_buffer_map
->
offset
-
dev
->
sg
->
handle
+
dev_priv
->
gart_vm_start
);
-
(
unsigned
long
)
dev
->
sg
->
virtual
+
dev_priv
->
gart_vm_start
);
DRM_DEBUG
(
"dev_priv->gart_size %d
\n
"
,
dev_priv
->
gart_size
);
...
...
This diff is collapsed.
Click to expand it.
drivers/cpufreq/cpufreq_conservative.c
浏览文件 @
cb650116
...
...
@@ -315,9 +315,9 @@ static void dbs_check_cpu(int cpu)
policy
=
this_dbs_info
->
cur_policy
;
if
(
init_flag
==
0
)
{
for
(
/* NULL */
;
init_flag
<
NR_CPUS
;
init_flag
++
)
{
dbs_info
=
&
per_cpu
(
cpu_dbs_info
,
init_flag
);
requested_freq
[
cpu
]
=
dbs_info
->
cur_policy
->
cur
;
for
_each_online_cpu
(
j
)
{
dbs_info
=
&
per_cpu
(
cpu_dbs_info
,
j
);
requested_freq
[
j
]
=
dbs_info
->
cur_policy
->
cur
;
}
init_flag
=
1
;
}
...
...
This diff is collapsed.
Click to expand it.
drivers/infiniband/hw/mthca/mthca_eq.c
浏览文件 @
cb650116
...
...
@@ -396,20 +396,21 @@ static irqreturn_t mthca_tavor_interrupt(int irq, void *dev_ptr, struct pt_regs
writel
(
dev
->
eq_table
.
clr_mask
,
dev
->
eq_table
.
clr_int
);
ecr
=
readl
(
dev
->
eq_regs
.
tavor
.
ecr_base
+
4
);
if
(
ecr
)
{
writel
(
ecr
,
dev
->
eq_regs
.
tavor
.
ecr_base
+
MTHCA_ECR_CLR_BASE
-
MTHCA_ECR_BASE
+
4
);
if
(
!
ecr
)
return
IRQ_NONE
;
for
(
i
=
0
;
i
<
MTHCA_NUM_EQ
;
++
i
)
if
(
ecr
&
dev
->
eq_table
.
eq
[
i
].
eqn_mask
&&
mthca_eq_int
(
dev
,
&
dev
->
eq_table
.
eq
[
i
]))
{
writel
(
ecr
,
dev
->
eq_regs
.
tavor
.
ecr_base
+
MTHCA_ECR_CLR_BASE
-
MTHCA_ECR_BASE
+
4
);
for
(
i
=
0
;
i
<
MTHCA_NUM_EQ
;
++
i
)
if
(
ecr
&
dev
->
eq_table
.
eq
[
i
].
eqn_mask
)
{
if
(
mthca_eq_int
(
dev
,
&
dev
->
eq_table
.
eq
[
i
]))
tavor_set_eq_ci
(
dev
,
&
dev
->
eq_table
.
eq
[
i
],
dev
->
eq_table
.
eq
[
i
].
cons_index
);
tavor_eq_req_not
(
dev
,
dev
->
eq_table
.
eq
[
i
].
eqn
);
}
}
tavor_eq_req_not
(
dev
,
dev
->
eq_table
.
eq
[
i
].
eqn
);
}
return
IRQ_
RETVAL
(
ecr
)
;
return
IRQ_
HANDLED
;
}
static
irqreturn_t
mthca_tavor_msi_x_interrupt
(
int
irq
,
void
*
eq_ptr
,
...
...
This diff is collapsed.
Click to expand it.
drivers/md/md.c
浏览文件 @
cb650116
...
...
@@ -3568,7 +3568,8 @@ static void md_do_sync(mddev_t *mddev)
mddev
->
curr_resync
=
2
;
try_again:
if
(
signal_pending
(
current
))
{
if
(
signal_pending
(
current
)
||
kthread_should_stop
())
{
flush_signals
(
current
);
set_bit
(
MD_RECOVERY_INTR
,
&
mddev
->
recovery
);
goto
skip
;
...
...
@@ -3590,8 +3591,9 @@ static void md_do_sync(mddev_t *mddev)
*/
continue
;
prepare_to_wait
(
&
resync_wait
,
&
wq
,
TASK_INTERRUPTIBLE
);
if
(
!
signal_pending
(
current
)
&&
mddev2
->
curr_resync
>=
mddev
->
curr_resync
)
{
if
(
!
signal_pending
(
current
)
&&
!
kthread_should_stop
()
&&
mddev2
->
curr_resync
>=
mddev
->
curr_resync
)
{
printk
(
KERN_INFO
"md: delaying resync of %s"
" until %s has finished resync (they"
" share one or more physical units)
\n
"
,
...
...
@@ -3697,7 +3699,7 @@ static void md_do_sync(mddev_t *mddev)
}
if
(
signal_pending
(
current
))
{
if
(
signal_pending
(
current
)
||
kthread_should_stop
()
)
{
/*
* got a signal, exit.
*/
...
...
This diff is collapsed.
Click to expand it.
drivers/media/video/Kconfig
浏览文件 @
cb650116
...
...
@@ -262,7 +262,6 @@ config VIDEO_SAA7134_DVB
depends on VIDEO_SAA7134 && DVB_CORE
select VIDEO_BUF_DVB
select DVB_MT352
select DVB_CX22702
select DVB_TDA1004X
---help---
This adds support for DVB cards based on the
...
...
This diff is collapsed.
Click to expand it.
drivers/pci/quirks.c
浏览文件 @
cb650116
...
...
@@ -241,7 +241,8 @@ static void __devinit quirk_s3_64M(struct pci_dev *dev)
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_S3
,
PCI_DEVICE_ID_S3_868
,
quirk_s3_64M
);
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_S3
,
PCI_DEVICE_ID_S3_968
,
quirk_s3_64M
);
static
void
__devinit
quirk_io_region
(
struct
pci_dev
*
dev
,
unsigned
region
,
unsigned
size
,
int
nr
)
static
void
__devinit
quirk_io_region
(
struct
pci_dev
*
dev
,
unsigned
region
,
unsigned
size
,
int
nr
,
const
char
*
name
)
{
region
&=
~
(
size
-
1
);
if
(
region
)
{
...
...
@@ -259,6 +260,7 @@ static void __devinit quirk_io_region(struct pci_dev *dev, unsigned region, unsi
pcibios_bus_to_resource
(
dev
,
res
,
&
bus_region
);
pci_claim_resource
(
dev
,
nr
);
printk
(
"PCI quirk: region %04x-%04x claimed by %s
\n
"
,
region
,
region
+
size
-
1
,
name
);
}
}
...
...
@@ -291,25 +293,98 @@ static void __devinit quirk_ali7101_acpi(struct pci_dev *dev)
u16
region
;
pci_read_config_word
(
dev
,
0xE0
,
&
region
);
quirk_io_region
(
dev
,
region
,
64
,
PCI_BRIDGE_RESOURCES
);
quirk_io_region
(
dev
,
region
,
64
,
PCI_BRIDGE_RESOURCES
,
"ali7101 ACPI"
);
pci_read_config_word
(
dev
,
0xE2
,
&
region
);
quirk_io_region
(
dev
,
region
,
32
,
PCI_BRIDGE_RESOURCES
+
1
);
quirk_io_region
(
dev
,
region
,
32
,
PCI_BRIDGE_RESOURCES
+
1
,
"ali7101 SMB"
);
}
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_AL
,
PCI_DEVICE_ID_AL_M7101
,
quirk_ali7101_acpi
);
static
void
piix4_io_quirk
(
struct
pci_dev
*
dev
,
const
char
*
name
,
unsigned
int
port
,
unsigned
int
enable
)
{
u32
devres
;
u32
mask
,
size
,
base
;
pci_read_config_dword
(
dev
,
port
,
&
devres
);
if
((
devres
&
enable
)
!=
enable
)
return
;
mask
=
(
devres
>>
16
)
&
15
;
base
=
devres
&
0xffff
;
size
=
16
;
for
(;;)
{
unsigned
bit
=
size
>>
1
;
if
((
bit
&
mask
)
==
bit
)
break
;
size
=
bit
;
}
/*
* For now we only print it out. Eventually we'll want to
* reserve it (at least if it's in the 0x1000+ range), but
* let's get enough confirmation reports first.
*/
base
&=
-
size
;
printk
(
"%s PIO at %04x-%04x
\n
"
,
name
,
base
,
base
+
size
-
1
);
}
static
void
piix4_mem_quirk
(
struct
pci_dev
*
dev
,
const
char
*
name
,
unsigned
int
port
,
unsigned
int
enable
)
{
u32
devres
;
u32
mask
,
size
,
base
;
pci_read_config_dword
(
dev
,
port
,
&
devres
);
if
((
devres
&
enable
)
!=
enable
)
return
;
base
=
devres
&
0xffff0000
;
mask
=
(
devres
&
0x3f
)
<<
16
;
size
=
128
<<
16
;
for
(;;)
{
unsigned
bit
=
size
>>
1
;
if
((
bit
&
mask
)
==
bit
)
break
;
size
=
bit
;
}
/*
* For now we only print it out. Eventually we'll want to
* reserve it, but let's get enough confirmation reports first.
*/
base
&=
-
size
;
printk
(
"%s MMIO at %04x-%04x
\n
"
,
name
,
base
,
base
+
size
-
1
);
}
/*
* PIIX4 ACPI: Two IO regions pointed to by longwords at
* 0x40 (64 bytes of ACPI registers)
* 0x90 (32 bytes of SMB registers)
* and a few strange programmable PIIX4 device resources.
*/
static
void
__devinit
quirk_piix4_acpi
(
struct
pci_dev
*
dev
)
{
u32
region
;
u32
region
,
res_a
;
pci_read_config_dword
(
dev
,
0x40
,
&
region
);
quirk_io_region
(
dev
,
region
,
64
,
PCI_BRIDGE_RESOURCES
);
quirk_io_region
(
dev
,
region
,
64
,
PCI_BRIDGE_RESOURCES
,
"PIIX4 ACPI"
);
pci_read_config_dword
(
dev
,
0x90
,
&
region
);
quirk_io_region
(
dev
,
region
,
32
,
PCI_BRIDGE_RESOURCES
+
1
);
quirk_io_region
(
dev
,
region
,
32
,
PCI_BRIDGE_RESOURCES
+
1
,
"PIIX4 SMB"
);
/* Device resource A has enables for some of the other ones */
pci_read_config_dword
(
dev
,
0x5c
,
&
res_a
);
piix4_io_quirk
(
dev
,
"PIIX4 devres B"
,
0x60
,
3
<<
21
);
piix4_io_quirk
(
dev
,
"PIIX4 devres C"
,
0x64
,
3
<<
21
);
/* Device resource D is just bitfields for static resources */
/* Device 12 enabled? */
if
(
res_a
&
(
1
<<
29
))
{
piix4_io_quirk
(
dev
,
"PIIX4 devres E"
,
0x68
,
1
<<
20
);
piix4_mem_quirk
(
dev
,
"PIIX4 devres F"
,
0x6c
,
1
<<
7
);
}
/* Device 13 enabled? */
if
(
res_a
&
(
1
<<
30
))
{
piix4_io_quirk
(
dev
,
"PIIX4 devres G"
,
0x70
,
1
<<
20
);
piix4_mem_quirk
(
dev
,
"PIIX4 devres H"
,
0x74
,
1
<<
7
);
}
piix4_io_quirk
(
dev
,
"PIIX4 devres I"
,
0x78
,
1
<<
20
);
piix4_io_quirk
(
dev
,
"PIIX4 devres J"
,
0x7c
,
1
<<
20
);
}
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82371AB_3
,
quirk_piix4_acpi
);
...
...
@@ -323,10 +398,10 @@ static void __devinit quirk_ich4_lpc_acpi(struct pci_dev *dev)
u32
region
;
pci_read_config_dword
(
dev
,
0x40
,
&
region
);
quirk_io_region
(
dev
,
region
,
128
,
PCI_BRIDGE_RESOURCES
);
quirk_io_region
(
dev
,
region
,
128
,
PCI_BRIDGE_RESOURCES
,
"ICH4 ACPI/GPIO/TCO"
);
pci_read_config_dword
(
dev
,
0x58
,
&
region
);
quirk_io_region
(
dev
,
region
,
64
,
PCI_BRIDGE_RESOURCES
+
1
);
quirk_io_region
(
dev
,
region
,
64
,
PCI_BRIDGE_RESOURCES
+
1
,
"ICH4 GPIO"
);
}
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82801AA_0
,
quirk_ich4_lpc_acpi
);
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82801AB_0
,
quirk_ich4_lpc_acpi
);
...
...
@@ -352,7 +427,7 @@ static void __devinit quirk_vt82c586_acpi(struct pci_dev *dev)
if
(
rev
&
0x10
)
{
pci_read_config_dword
(
dev
,
0x48
,
&
region
);
region
&=
PCI_BASE_ADDRESS_IO_MASK
;
quirk_io_region
(
dev
,
region
,
256
,
PCI_BRIDGE_RESOURCES
);
quirk_io_region
(
dev
,
region
,
256
,
PCI_BRIDGE_RESOURCES
,
"vt82c586 ACPI"
);
}
}
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_VIA
,
PCI_DEVICE_ID_VIA_82C586_3
,
quirk_vt82c586_acpi
);
...
...
@@ -372,11 +447,11 @@ static void __devinit quirk_vt82c686_acpi(struct pci_dev *dev)
pci_read_config_word
(
dev
,
0x70
,
&
hm
);
hm
&=
PCI_BASE_ADDRESS_IO_MASK
;
quirk_io_region
(
dev
,
hm
,
128
,
PCI_BRIDGE_RESOURCES
+
1
);
quirk_io_region
(
dev
,
hm
,
128
,
PCI_BRIDGE_RESOURCES
+
1
,
"vt82c868 HW-mon"
);
pci_read_config_dword
(
dev
,
0x90
,
&
smb
);
smb
&=
PCI_BASE_ADDRESS_IO_MASK
;
quirk_io_region
(
dev
,
smb
,
16
,
PCI_BRIDGE_RESOURCES
+
2
);
quirk_io_region
(
dev
,
smb
,
16
,
PCI_BRIDGE_RESOURCES
+
2
,
"vt82c868 SMB"
);
}
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_VIA
,
PCI_DEVICE_ID_VIA_82C686_4
,
quirk_vt82c686_acpi
);
...
...
@@ -391,11 +466,11 @@ static void __devinit quirk_vt8235_acpi(struct pci_dev *dev)
pci_read_config_word
(
dev
,
0x88
,
&
pm
);
pm
&=
PCI_BASE_ADDRESS_IO_MASK
;
quirk_io_region
(
dev
,
pm
,
128
,
PCI_BRIDGE_RESOURCES
);
quirk_io_region
(
dev
,
pm
,
128
,
PCI_BRIDGE_RESOURCES
,
"vt8235 PM"
);
pci_read_config_word
(
dev
,
0xd0
,
&
smb
);
smb
&=
PCI_BASE_ADDRESS_IO_MASK
;
quirk_io_region
(
dev
,
smb
,
16
,
PCI_BRIDGE_RESOURCES
+
1
);
quirk_io_region
(
dev
,
smb
,
16
,
PCI_BRIDGE_RESOURCES
+
1
,
"vt8235 SMB"
);
}
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_VIA
,
PCI_DEVICE_ID_VIA_8235
,
quirk_vt8235_acpi
);
...
...
This diff is collapsed.
Click to expand it.
drivers/pci/setup-bus.c
浏览文件 @
cb650116
...
...
@@ -40,7 +40,7 @@
* FIXME: IO should be max 256 bytes. However, since we may
* have a P2P bridge below a cardbus bridge, we need 4K.
*/
#define CARDBUS_IO_SIZE (
4*1024
)
#define CARDBUS_IO_SIZE (
256
)
#define CARDBUS_MEM_SIZE (32*1024*1024)
static
void
__devinit
...
...
This diff is collapsed.
Click to expand it.
drivers/scsi/NCR5380.c
浏览文件 @
cb650116
...
...
@@ -91,7 +91,7 @@
#ifndef NDEBUG
#define NDEBUG 0
#endif
#ifndef NDEBUG
#ifndef NDEBUG
_ABORT
#define NDEBUG_ABORT 0
#endif
...
...
This diff is collapsed.
Click to expand it.
drivers/scsi/aacraid/aacraid.h
浏览文件 @
cb650116
...
...
@@ -19,7 +19,7 @@
#define AAC_MAX_LUN (8)
#define AAC_MAX_HOSTPHYSMEMPAGES (0xfffff)
#define AAC_MAX_32BIT_SGBCOUNT ((unsigned short)
512
)
#define AAC_MAX_32BIT_SGBCOUNT ((unsigned short)
256
)
/*
* These macros convert from physical channels to virtual channels
...
...
This diff is collapsed.
Click to expand it.
drivers/scsi/qla2xxx/qla_os.c
浏览文件 @
cb650116
...
...
@@ -1325,6 +1325,8 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info)
ha
->
brd_info
=
brd_info
;
sprintf
(
ha
->
host_str
,
"%s_%ld"
,
ha
->
brd_info
->
drv_name
,
ha
->
host_no
);
ha
->
dpc_pid
=
-
1
;
/* Configure PCI I/O space */
ret
=
qla2x00_iospace_config
(
ha
);
if
(
ret
)
...
...
@@ -1448,7 +1450,6 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info)
*/
spin_lock_init
(
&
ha
->
mbx_reg_lock
);
ha
->
dpc_pid
=
-
1
;
init_completion
(
&
ha
->
dpc_inited
);
init_completion
(
&
ha
->
dpc_exited
);
...
...
This diff is collapsed.
Click to expand it.
drivers/scsi/scsi_devinfo.c
浏览文件 @
cb650116
...
...
@@ -185,6 +185,7 @@ static struct {
{
"PIONEER"
,
"CD-ROM DRM-600"
,
NULL
,
BLIST_FORCELUN
|
BLIST_SINGLELUN
},
{
"PIONEER"
,
"CD-ROM DRM-602X"
,
NULL
,
BLIST_FORCELUN
|
BLIST_SINGLELUN
},
{
"PIONEER"
,
"CD-ROM DRM-604X"
,
NULL
,
BLIST_FORCELUN
|
BLIST_SINGLELUN
},
{
"PIONEER"
,
"CD-ROM DRM-624X"
,
NULL
,
BLIST_FORCELUN
|
BLIST_SINGLELUN
},
{
"REGAL"
,
"CDC-4X"
,
NULL
,
BLIST_MAX5LUN
|
BLIST_SINGLELUN
},
{
"SanDisk"
,
"ImageMate CF-SD1"
,
NULL
,
BLIST_FORCELUN
},
{
"SEAGATE"
,
"ST34555N"
,
"0930"
,
BLIST_NOTQ
},
/* Chokes on tagged INQUIRY */
...
...
This diff is collapsed.
Click to expand it.
drivers/scsi/scsi_lib.c
浏览文件 @
cb650116
...
...
@@ -97,7 +97,6 @@ int scsi_insert_special_req(struct scsi_request *sreq, int at_head)
}
static
void
scsi_run_queue
(
struct
request_queue
*
q
);
static
void
scsi_release_buffers
(
struct
scsi_cmnd
*
cmd
);
/*
* Function: scsi_unprep_request()
...
...
@@ -1040,8 +1039,10 @@ static int scsi_init_io(struct scsi_cmnd *cmd)
* if sg table allocation fails, requeue request later.
*/
sgpnt
=
scsi_alloc_sgtable
(
cmd
,
GFP_ATOMIC
);
if
(
unlikely
(
!
sgpnt
))
if
(
unlikely
(
!
sgpnt
))
{
scsi_unprep_request
(
req
);
return
BLKPREP_DEFER
;
}
cmd
->
request_buffer
=
(
char
*
)
sgpnt
;
cmd
->
request_bufflen
=
req
->
nr_sectors
<<
9
;
...
...
@@ -1245,8 +1246,8 @@ static int scsi_prep_fn(struct request_queue *q, struct request *req)
*/
ret
=
scsi_init_io
(
cmd
);
switch
(
ret
)
{
/* For BLKPREP_KILL/DEFER the cmd was released */
case
BLKPREP_KILL
:
/* BLKPREP_KILL return also releases the command */
goto
kill
;
case
BLKPREP_DEFER
:
goto
defer
;
...
...
This diff is collapsed.
Click to expand it.
drivers/scsi/scsi_transport_fc.c
浏览文件 @
cb650116
...
...
@@ -819,12 +819,15 @@ show_fc_private_host_tgtid_bind_type(struct class_device *cdev, char *buf)
return
snprintf
(
buf
,
FC_BINDTYPE_MAX_NAMELEN
,
"%s
\n
"
,
name
);
}
#define get_list_head_entry(pos, head, member) \
pos = list_entry((head)->next, typeof(*pos), member)
static
ssize_t
store_fc_private_host_tgtid_bind_type
(
struct
class_device
*
cdev
,
const
char
*
buf
,
size_t
count
)
{
struct
Scsi_Host
*
shost
=
transport_class_to_shost
(
cdev
);
struct
fc_rport
*
rport
,
*
next_rport
;
struct
fc_rport
*
rport
;
enum
fc_tgtid_binding_type
val
;
unsigned
long
flags
;
...
...
@@ -834,9 +837,13 @@ store_fc_private_host_tgtid_bind_type(struct class_device *cdev,
/* if changing bind type, purge all unused consistent bindings */
if
(
val
!=
fc_host_tgtid_bind_type
(
shost
))
{
spin_lock_irqsave
(
shost
->
host_lock
,
flags
);
list_for_each_entry_safe
(
rport
,
next_rport
,
&
fc_host_rport_bindings
(
shost
),
peers
)
while
(
!
list_empty
(
&
fc_host_rport_bindings
(
shost
)))
{
get_list_head_entry
(
rport
,
&
fc_host_rport_bindings
(
shost
),
peers
);
spin_unlock_irqrestore
(
shost
->
host_lock
,
flags
);
fc_rport_terminate
(
rport
);
spin_lock_irqsave
(
shost
->
host_lock
,
flags
);
}
spin_unlock_irqrestore
(
shost
->
host_lock
,
flags
);
}
...
...
This diff is collapsed.
Click to expand it.
drivers/serial/8250_pci.c
浏览文件 @
cb650116
...
...
@@ -152,6 +152,7 @@ static int __devinit pci_hp_diva_init(struct pci_dev *dev)
rc
=
4
;
break
;
case
PCI_DEVICE_ID_HP_DIVA_POWERBAR
:
case
PCI_DEVICE_ID_HP_DIVA_HURRICANE
:
rc
=
1
;
break
;
}
...
...
@@ -226,8 +227,10 @@ static int __devinit pci_plx9050_init(struct pci_dev *dev)
}
irq_config
=
0x41
;
if
(
dev
->
vendor
==
PCI_VENDOR_ID_PANACOM
)
if
(
dev
->
vendor
==
PCI_VENDOR_ID_PANACOM
||
dev
->
subsystem_vendor
==
PCI_SUBVENDOR_ID_EXSYS
)
{
irq_config
=
0x43
;
}
if
((
dev
->
vendor
==
PCI_VENDOR_ID_PLX
)
&&
(
dev
->
device
==
PCI_DEVICE_ID_PLX_ROMULUS
))
{
/*
...
...
@@ -661,6 +664,15 @@ static struct pci_serial_quirk pci_serial_quirks[] = {
/*
* PLX
*/
{
.
vendor
=
PCI_VENDOR_ID_PLX
,
.
device
=
PCI_DEVICE_ID_PLX_9050
,
.
subvendor
=
PCI_SUBVENDOR_ID_EXSYS
,
.
subdevice
=
PCI_SUBDEVICE_ID_EXSYS_4055
,
.
init
=
pci_plx9050_init
,
.
setup
=
pci_default_setup
,
.
exit
=
__devexit_p
(
pci_plx9050_exit
),
},
{
.
vendor
=
PCI_VENDOR_ID_PLX
,
.
device
=
PCI_DEVICE_ID_PLX_9050
,
...
...
@@ -927,6 +939,7 @@ enum pci_board_num_t {
pbn_panacom
,
pbn_panacom2
,
pbn_panacom4
,
pbn_exsys_4055
,
pbn_plx_romulus
,
pbn_oxsemi
,
pbn_intel_i960
,
...
...
@@ -1292,6 +1305,13 @@ static struct pciserial_board pci_boards[] __devinitdata = {
.
reg_shift
=
7
,
},
[
pbn_exsys_4055
]
=
{
.
flags
=
FL_BASE2
,
.
num_ports
=
4
,
.
base_baud
=
115200
,
.
uart_offset
=
8
,
},
/* I think this entry is broken - the first_offset looks wrong --rmk */
[
pbn_plx_romulus
]
=
{
.
flags
=
FL_BASE2
,
...
...
@@ -1853,6 +1873,10 @@ static struct pci_device_id serial_pci_tbl[] = {
PCI_SUBVENDOR_ID_CHASE_PCIRAS
,
PCI_SUBDEVICE_ID_CHASE_PCIRAS8
,
0
,
0
,
pbn_b2_8_460800
},
{
PCI_VENDOR_ID_PLX
,
PCI_DEVICE_ID_PLX_9050
,
PCI_SUBVENDOR_ID_EXSYS
,
PCI_SUBDEVICE_ID_EXSYS_4055
,
0
,
0
,
pbn_exsys_4055
},
/*
* Megawolf Romulus PCI Serial Card, from Mike Hudson
* (Exoray@isys.ca)
...
...
This diff is collapsed.
Click to expand it.
drivers/video/fbsysfs.c
浏览文件 @
cb650116
...
...
@@ -242,6 +242,13 @@ static ssize_t show_virtual(struct class_device *class_device, char *buf)
fb_info
->
var
.
yres_virtual
);
}
static
ssize_t
show_stride
(
struct
class_device
*
class_device
,
char
*
buf
)
{
struct
fb_info
*
fb_info
=
(
struct
fb_info
*
)
class_get_devdata
(
class_device
);
return
snprintf
(
buf
,
PAGE_SIZE
,
"%d
\n
"
,
fb_info
->
fix
.
line_length
);
}
/* Format for cmap is "%02x%c%4x%4x%4x\n" */
/* %02x entry %c transp %4x red %4x blue %4x green \n */
/* 256 rows at 16 chars equals 4096, the normal page size */
...
...
@@ -432,6 +439,7 @@ static struct class_device_attribute class_device_attrs[] = {
__ATTR
(
pan
,
S_IRUGO
|
S_IWUSR
,
show_pan
,
store_pan
),
__ATTR
(
virtual_size
,
S_IRUGO
|
S_IWUSR
,
show_virtual
,
store_virtual
),
__ATTR
(
name
,
S_IRUGO
,
show_name
,
NULL
),
__ATTR
(
stride
,
S_IRUGO
,
show_stride
,
NULL
),
};
int
fb_init_class_device
(
struct
fb_info
*
fb_info
)
...
...
This diff is collapsed.
Click to expand it.
fs/aio.c
浏览文件 @
cb650116
...
...
@@ -1397,6 +1397,9 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb)
if
(
unlikely
(
!
access_ok
(
VERIFY_WRITE
,
kiocb
->
ki_buf
,
kiocb
->
ki_left
)))
break
;
ret
=
security_file_permission
(
file
,
MAY_READ
);
if
(
unlikely
(
ret
))
break
;
ret
=
-
EINVAL
;
if
(
file
->
f_op
->
aio_read
)
kiocb
->
ki_retry
=
aio_pread
;
...
...
@@ -1409,6 +1412,9 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb)
if
(
unlikely
(
!
access_ok
(
VERIFY_READ
,
kiocb
->
ki_buf
,
kiocb
->
ki_left
)))
break
;
ret
=
security_file_permission
(
file
,
MAY_WRITE
);
if
(
unlikely
(
ret
))
break
;
ret
=
-
EINVAL
;
if
(
file
->
f_op
->
aio_write
)
kiocb
->
ki_retry
=
aio_pwrite
;
...
...
This diff is collapsed.
Click to expand it.
fs/hfsplus/super.c
浏览文件 @
cb650116
...
...
@@ -50,6 +50,7 @@ static void hfsplus_read_inode(struct inode *inode)
init_MUTEX
(
&
HFSPLUS_I
(
inode
).
extents_lock
);
HFSPLUS_I
(
inode
).
flags
=
0
;
HFSPLUS_I
(
inode
).
rsrc_inode
=
NULL
;
atomic_set
(
&
HFSPLUS_I
(
inode
).
opencnt
,
0
);
if
(
inode
->
i_ino
>=
HFSPLUS_FIRSTUSER_CNID
)
{
read_inode:
...
...
This diff is collapsed.
Click to expand it.
fs/inotify.c
浏览文件 @
cb650116
...
...
@@ -176,6 +176,7 @@ static inline void put_inotify_dev(struct inotify_device *dev)
if
(
atomic_dec_and_test
(
&
dev
->
count
))
{
atomic_dec
(
&
dev
->
user
->
inotify_devs
);
free_uid
(
dev
->
user
);
idr_destroy
(
&
dev
->
idr
);
kfree
(
dev
);
}
}
...
...
This diff is collapsed.
Click to expand it.
include/asm-alpha/atomic.h
浏览文件 @
cb650116
#ifndef _ALPHA_ATOMIC_H
#define _ALPHA_ATOMIC_H
#include <asm/barrier.h>
/*
* Atomic operations that C can't guarantee us. Useful for
* resource counting etc...
...
...
@@ -100,18 +102,19 @@ static __inline__ void atomic64_sub(long i, atomic64_t * v)
static
__inline__
long
atomic_add_return
(
int
i
,
atomic_t
*
v
)
{
long
temp
,
result
;
smp_mb
();
__asm__
__volatile__
(
"1: ldl_l %0,%1
\n
"
" addl %0,%3,%2
\n
"
" addl %0,%3,%0
\n
"
" stl_c %0,%1
\n
"
" beq %0,2f
\n
"
" mb
\n
"
".subsection 2
\n
"
"2: br 1b
\n
"
".previous"
:
"=&r"
(
temp
),
"=m"
(
v
->
counter
),
"=&r"
(
result
)
:
"Ir"
(
i
),
"m"
(
v
->
counter
)
:
"memory"
);
smp_mb
();
return
result
;
}
...
...
@@ -120,54 +123,57 @@ static __inline__ long atomic_add_return(int i, atomic_t * v)
static
__inline__
long
atomic64_add_return
(
long
i
,
atomic64_t
*
v
)
{
long
temp
,
result
;
smp_mb
();
__asm__
__volatile__
(
"1: ldq_l %0,%1
\n
"
" addq %0,%3,%2
\n
"
" addq %0,%3,%0
\n
"
" stq_c %0,%1
\n
"
" beq %0,2f
\n
"
" mb
\n
"
".subsection 2
\n
"
"2: br 1b
\n
"
".previous"
:
"=&r"
(
temp
),
"=m"
(
v
->
counter
),
"=&r"
(
result
)
:
"Ir"
(
i
),
"m"
(
v
->
counter
)
:
"memory"
);
smp_mb
();
return
result
;
}
static
__inline__
long
atomic_sub_return
(
int
i
,
atomic_t
*
v
)
{
long
temp
,
result
;
smp_mb
();
__asm__
__volatile__
(
"1: ldl_l %0,%1
\n
"
" subl %0,%3,%2
\n
"
" subl %0,%3,%0
\n
"
" stl_c %0,%1
\n
"
" beq %0,2f
\n
"
" mb
\n
"
".subsection 2
\n
"
"2: br 1b
\n
"
".previous"
:
"=&r"
(
temp
),
"=m"
(
v
->
counter
),
"=&r"
(
result
)
:
"Ir"
(
i
),
"m"
(
v
->
counter
)
:
"memory"
);
smp_mb
();
return
result
;
}
static
__inline__
long
atomic64_sub_return
(
long
i
,
atomic64_t
*
v
)
{
long
temp
,
result
;
smp_mb
();
__asm__
__volatile__
(
"1: ldq_l %0,%1
\n
"
" subq %0,%3,%2
\n
"
" subq %0,%3,%0
\n
"
" stq_c %0,%1
\n
"
" beq %0,2f
\n
"
" mb
\n
"
".subsection 2
\n
"
"2: br 1b
\n
"
".previous"
:
"=&r"
(
temp
),
"=m"
(
v
->
counter
),
"=&r"
(
result
)
:
"Ir"
(
i
),
"m"
(
v
->
counter
)
:
"memory"
);
smp_mb
();
return
result
;
}
...
...
This diff is collapsed.
Click to expand it.
include/asm-alpha/barrier.h
0 → 100644
浏览文件 @
cb650116
#ifndef __BARRIER_H
#define __BARRIER_H
#define mb() \
__asm__ __volatile__("mb": : :"memory")
#define rmb() \
__asm__ __volatile__("mb": : :"memory")
#define wmb() \
__asm__ __volatile__("wmb": : :"memory")
#define read_barrier_depends() \
__asm__ __volatile__("mb": : :"memory")
#ifdef CONFIG_SMP
#define smp_mb() mb()
#define smp_rmb() rmb()
#define smp_wmb() wmb()
#define smp_read_barrier_depends() read_barrier_depends()
#else
#define smp_mb() barrier()
#define smp_rmb() barrier()
#define smp_wmb() barrier()
#define smp_read_barrier_depends() barrier()
#endif
#define set_mb(var, value) \
do { var = value; mb(); } while (0)
#define set_wmb(var, value) \
do { var = value; wmb(); } while (0)
#endif
/* __BARRIER_H */
This diff is collapsed.
Click to expand it.
include/asm-alpha/system.h
浏览文件 @
cb650116
...
...
@@ -4,6 +4,7 @@
#include <linux/config.h>
#include <asm/pal.h>
#include <asm/page.h>
#include <asm/barrier.h>
/*
* System defines.. Note that this is included both from .c and .S
...
...
@@ -139,36 +140,6 @@ extern void halt(void) __attribute__((noreturn));
struct
task_struct
;
extern
struct
task_struct
*
alpha_switch_to
(
unsigned
long
,
struct
task_struct
*
);
#define mb() \
__asm__ __volatile__("mb": : :"memory")
#define rmb() \
__asm__ __volatile__("mb": : :"memory")
#define wmb() \
__asm__ __volatile__("wmb": : :"memory")
#define read_barrier_depends() \
__asm__ __volatile__("mb": : :"memory")
#ifdef CONFIG_SMP
#define smp_mb() mb()
#define smp_rmb() rmb()
#define smp_wmb() wmb()
#define smp_read_barrier_depends() read_barrier_depends()
#else
#define smp_mb() barrier()
#define smp_rmb() barrier()
#define smp_wmb() barrier()
#define smp_read_barrier_depends() barrier()
#endif
#define set_mb(var, value) \
do { var = value; mb(); } while (0)
#define set_wmb(var, value) \
do { var = value; wmb(); } while (0)
#define imb() \
__asm__ __volatile__ ("call_pal %0 #imb" : : "i" (PAL_imb) : "memory")
...
...
This diff is collapsed.
Click to expand it.
include/asm-arm/bitops.h
浏览文件 @
cb650116
...
...
@@ -347,7 +347,6 @@ static inline unsigned long __ffs(unsigned long word)
* the clz instruction for much better code efficiency.
*/
static
__inline__
int
generic_fls
(
int
x
);
#define fls(x) \
( __builtin_constant_p(x) ? generic_fls(x) : \
({ int __r; asm("clz\t%0, %1" : "=r"(__r) : "r"(x) : "cc"); 32-__r; }) )
...
...
This diff is collapsed.
Click to expand it.
include/asm-x86_64/pci.h
浏览文件 @
cb650116
...
...
@@ -50,10 +50,10 @@ extern int iommu_setup(char *opt);
* address space. The networking and block device layers use
* this boolean for bounce buffer decisions
*
* On
x86-
64 it mostly equals, but we set it to zero to tell some subsystems
* that an
hard or soft
IOMMU is available.
* On
AMD
64 it mostly equals, but we set it to zero to tell some subsystems
* that an IOMMU is available.
*/
#define PCI_DMA_BUS_IS_PHYS
0
#define PCI_DMA_BUS_IS_PHYS
(no_iommu ? 1 : 0)
/*
* x86-64 always supports DAC, but sometimes it is useful to force
...
...
This diff is collapsed.
Click to expand it.
include/linux/idr.h
浏览文件 @
cb650116
...
...
@@ -75,4 +75,5 @@ int idr_pre_get(struct idr *idp, unsigned gfp_mask);
int
idr_get_new
(
struct
idr
*
idp
,
void
*
ptr
,
int
*
id
);
int
idr_get_new_above
(
struct
idr
*
idp
,
void
*
ptr
,
int
starting_id
,
int
*
id
);
void
idr_remove
(
struct
idr
*
idp
,
int
id
);
void
idr_destroy
(
struct
idr
*
idp
);
void
idr_init
(
struct
idr
*
idp
);
This diff is collapsed.
Click to expand it.
include/linux/pci_ids.h
浏览文件 @
cb650116
...
...
@@ -723,6 +723,7 @@
#define PCI_DEVICE_ID_HP_DIVA_EVEREST 0x1282
#define PCI_DEVICE_ID_HP_DIVA_AUX 0x1290
#define PCI_DEVICE_ID_HP_DIVA_RMP3 0x1301
#define PCI_DEVICE_ID_HP_DIVA_HURRICANE 0x132a
#define PCI_DEVICE_ID_HP_CISS 0x3210
#define PCI_DEVICE_ID_HP_CISSA 0x3220
#define PCI_DEVICE_ID_HP_CISSB 0x3222
...
...
@@ -2696,6 +2697,7 @@
#define PCI_SUBVENDOR_ID_EXSYS 0xd84d
#define PCI_SUBDEVICE_ID_EXSYS_4014 0x4014
#define PCI_SUBDEVICE_ID_EXSYS_4055 0x4055
#define PCI_VENDOR_ID_TIGERJET 0xe159
#define PCI_DEVICE_ID_TIGERJET_300 0x0001
...
...
This diff is collapsed.
Click to expand it.
include/net/ax25.h
浏览文件 @
cb650116
...
...
@@ -171,7 +171,7 @@ typedef struct {
ax25_address
calls
[
AX25_MAX_DIGIS
];
unsigned
char
repeated
[
AX25_MAX_DIGIS
];
unsigned
char
ndigi
;
char
lastrepeat
;
signed
char
lastrepeat
;
}
ax25_digi
;
typedef
struct
ax25_route
{
...
...
This diff is collapsed.
Click to expand it.
include/net/llc_pdu.h
浏览文件 @
cb650116
...
...
@@ -254,8 +254,10 @@ static inline void llc_pdu_decode_sa(struct sk_buff *skb, u8 *sa)
{
if
(
skb
->
protocol
==
ntohs
(
ETH_P_802_2
))
memcpy
(
sa
,
eth_hdr
(
skb
)
->
h_source
,
ETH_ALEN
);
else
if
(
skb
->
protocol
==
ntohs
(
ETH_P_TR_802_2
))
else
if
(
skb
->
protocol
==
ntohs
(
ETH_P_TR_802_2
))
{
memcpy
(
sa
,
tr_hdr
(
skb
)
->
saddr
,
ETH_ALEN
);
*
sa
&=
0x7F
;
}
}
/**
...
...
This diff is collapsed.
Click to expand it.
kernel/posix-cpu-timers.c
浏览文件 @
cb650116
...
...
@@ -91,7 +91,7 @@ static inline union cpu_time_count cpu_time_sub(clockid_t which_clock,
* Update expiry time from increment, and increase overrun count,
* given the current clock sample.
*/
static
inline
void
bump_cpu_timer
(
struct
k_itimer
*
timer
,
static
void
bump_cpu_timer
(
struct
k_itimer
*
timer
,
union
cpu_time_count
now
)
{
int
i
;
...
...
@@ -110,7 +110,7 @@ static inline void bump_cpu_timer(struct k_itimer *timer,
for
(
i
=
0
;
incr
<
delta
-
incr
;
i
++
)
incr
=
incr
<<
1
;
for
(;
i
>=
0
;
incr
>>=
1
,
i
--
)
{
if
(
delta
<
=
incr
)
if
(
delta
<
incr
)
continue
;
timer
->
it
.
cpu
.
expires
.
sched
+=
incr
;
timer
->
it_overrun
+=
1
<<
i
;
...
...
@@ -128,7 +128,7 @@ static inline void bump_cpu_timer(struct k_itimer *timer,
for
(
i
=
0
;
cputime_lt
(
incr
,
cputime_sub
(
delta
,
incr
));
i
++
)
incr
=
cputime_add
(
incr
,
incr
);
for
(;
i
>=
0
;
incr
=
cputime_halve
(
incr
),
i
--
)
{
if
(
cputime_l
e
(
delta
,
incr
))
if
(
cputime_l
t
(
delta
,
incr
))
continue
;
timer
->
it
.
cpu
.
expires
.
cpu
=
cputime_add
(
timer
->
it
.
cpu
.
expires
.
cpu
,
incr
);
...
...
@@ -380,14 +380,9 @@ int posix_cpu_timer_create(struct k_itimer *new_timer)
int
posix_cpu_timer_del
(
struct
k_itimer
*
timer
)
{
struct
task_struct
*
p
=
timer
->
it
.
cpu
.
task
;
int
ret
=
0
;
if
(
timer
->
it
.
cpu
.
firing
)
return
TIMER_RETRY
;
if
(
unlikely
(
p
==
NULL
))
return
0
;
if
(
!
list_empty
(
&
timer
->
it
.
cpu
.
entry
))
{
if
(
likely
(
p
!=
NULL
))
{
read_lock
(
&
tasklist_lock
);
if
(
unlikely
(
p
->
signal
==
NULL
))
{
/*
...
...
@@ -396,18 +391,20 @@ int posix_cpu_timer_del(struct k_itimer *timer)
*/
BUG_ON
(
!
list_empty
(
&
timer
->
it
.
cpu
.
entry
));
}
else
{
/*
* Take us off the task's timer list.
*/
spin_lock
(
&
p
->
sighand
->
siglock
);
list_del
(
&
timer
->
it
.
cpu
.
entry
);
if
(
timer
->
it
.
cpu
.
firing
)
ret
=
TIMER_RETRY
;
else
list_del
(
&
timer
->
it
.
cpu
.
entry
);
spin_unlock
(
&
p
->
sighand
->
siglock
);
}
read_unlock
(
&
tasklist_lock
);
if
(
!
ret
)
put_task_struct
(
p
);
}
put_task_struct
(
p
);
return
0
;
return
ret
;
}
/*
...
...
@@ -424,8 +421,6 @@ static void cleanup_timers(struct list_head *head,
cputime_t
ptime
=
cputime_add
(
utime
,
stime
);
list_for_each_entry_safe
(
timer
,
next
,
head
,
entry
)
{
put_task_struct
(
timer
->
task
);
timer
->
task
=
NULL
;
list_del_init
(
&
timer
->
entry
);
if
(
cputime_lt
(
timer
->
expires
.
cpu
,
ptime
))
{
timer
->
expires
.
cpu
=
cputime_zero
;
...
...
@@ -437,8 +432,6 @@ static void cleanup_timers(struct list_head *head,
++
head
;
list_for_each_entry_safe
(
timer
,
next
,
head
,
entry
)
{
put_task_struct
(
timer
->
task
);
timer
->
task
=
NULL
;
list_del_init
(
&
timer
->
entry
);
if
(
cputime_lt
(
timer
->
expires
.
cpu
,
utime
))
{
timer
->
expires
.
cpu
=
cputime_zero
;
...
...
@@ -450,8 +443,6 @@ static void cleanup_timers(struct list_head *head,
++
head
;
list_for_each_entry_safe
(
timer
,
next
,
head
,
entry
)
{
put_task_struct
(
timer
->
task
);
timer
->
task
=
NULL
;
list_del_init
(
&
timer
->
entry
);
if
(
timer
->
expires
.
sched
<
sched_time
)
{
timer
->
expires
.
sched
=
0
;
...
...
@@ -495,6 +486,9 @@ static void process_timer_rebalance(struct task_struct *p,
struct
task_struct
*
t
=
p
;
unsigned
int
nthreads
=
atomic_read
(
&
p
->
signal
->
live
);
if
(
!
nthreads
)
return
;
switch
(
clock_idx
)
{
default:
BUG
();
...
...
@@ -503,7 +497,7 @@ static void process_timer_rebalance(struct task_struct *p,
left
=
cputime_div
(
cputime_sub
(
expires
.
cpu
,
val
.
cpu
),
nthreads
);
do
{
if
(
!
unlikely
(
t
->
exit_state
))
{
if
(
!
unlikely
(
t
->
flags
&
PF_EXITING
))
{
ticks
=
cputime_add
(
prof_ticks
(
t
),
left
);
if
(
cputime_eq
(
t
->
it_prof_expires
,
cputime_zero
)
||
...
...
@@ -518,7 +512,7 @@ static void process_timer_rebalance(struct task_struct *p,
left
=
cputime_div
(
cputime_sub
(
expires
.
cpu
,
val
.
cpu
),
nthreads
);
do
{
if
(
!
unlikely
(
t
->
exit_state
))
{
if
(
!
unlikely
(
t
->
flags
&
PF_EXITING
))
{
ticks
=
cputime_add
(
virt_ticks
(
t
),
left
);
if
(
cputime_eq
(
t
->
it_virt_expires
,
cputime_zero
)
||
...
...
@@ -533,7 +527,7 @@ static void process_timer_rebalance(struct task_struct *p,
nsleft
=
expires
.
sched
-
val
.
sched
;
do_div
(
nsleft
,
nthreads
);
do
{
if
(
!
unlikely
(
t
->
exit_state
))
{
if
(
!
unlikely
(
t
->
flags
&
PF_EXITING
))
{
ns
=
t
->
sched_time
+
nsleft
;
if
(
t
->
it_sched_expires
==
0
||
t
->
it_sched_expires
>
ns
)
{
...
...
@@ -572,6 +566,9 @@ static void arm_timer(struct k_itimer *timer, union cpu_time_count now)
struct
cpu_timer_list
*
next
;
unsigned
long
i
;
if
(
CPUCLOCK_PERTHREAD
(
timer
->
it_clock
)
&&
(
p
->
flags
&
PF_EXITING
))
return
;
head
=
(
CPUCLOCK_PERTHREAD
(
timer
->
it_clock
)
?
p
->
cpu_timers
:
p
->
signal
->
cpu_timers
);
head
+=
CPUCLOCK_WHICH
(
timer
->
it_clock
);
...
...
@@ -582,17 +579,15 @@ static void arm_timer(struct k_itimer *timer, union cpu_time_count now)
listpos
=
head
;
if
(
CPUCLOCK_WHICH
(
timer
->
it_clock
)
==
CPUCLOCK_SCHED
)
{
list_for_each_entry
(
next
,
head
,
entry
)
{
if
(
next
->
expires
.
sched
>
nt
->
expires
.
sched
)
{
listpos
=
&
next
->
entry
;
if
(
next
->
expires
.
sched
>
nt
->
expires
.
sched
)
break
;
}
listpos
=
&
next
->
entry
;
}
}
else
{
list_for_each_entry
(
next
,
head
,
entry
)
{
if
(
cputime_gt
(
next
->
expires
.
cpu
,
nt
->
expires
.
cpu
))
{
listpos
=
&
next
->
entry
;
if
(
cputime_gt
(
next
->
expires
.
cpu
,
nt
->
expires
.
cpu
))
break
;
}
listpos
=
&
next
->
entry
;
}
}
list_add
(
&
nt
->
entry
,
listpos
);
...
...
@@ -736,9 +731,15 @@ int posix_cpu_timer_set(struct k_itimer *timer, int flags,
* Disarm any old timer after extracting its expiry time.
*/
BUG_ON
(
!
irqs_disabled
());
ret
=
0
;
spin_lock
(
&
p
->
sighand
->
siglock
);
old_expires
=
timer
->
it
.
cpu
.
expires
;
list_del_init
(
&
timer
->
it
.
cpu
.
entry
);
if
(
unlikely
(
timer
->
it
.
cpu
.
firing
))
{
timer
->
it
.
cpu
.
firing
=
-
1
;
ret
=
TIMER_RETRY
;
}
else
list_del_init
(
&
timer
->
it
.
cpu
.
entry
);
spin_unlock
(
&
p
->
sighand
->
siglock
);
/*
...
...
@@ -786,7 +787,7 @@ int posix_cpu_timer_set(struct k_itimer *timer, int flags,
}
}
if
(
unlikely
(
timer
->
it
.
cpu
.
firing
))
{
if
(
unlikely
(
ret
))
{
/*
* We are colliding with the timer actually firing.
* Punt after filling in the timer's old value, and
...
...
@@ -794,8 +795,6 @@ int posix_cpu_timer_set(struct k_itimer *timer, int flags,
* it as an overrun (thanks to bump_cpu_timer above).
*/
read_unlock
(
&
tasklist_lock
);
timer
->
it
.
cpu
.
firing
=
-
1
;
ret
=
TIMER_RETRY
;
goto
out
;
}
...
...
@@ -961,14 +960,16 @@ void posix_cpu_timer_get(struct k_itimer *timer, struct itimerspec *itp)
static
void
check_thread_timers
(
struct
task_struct
*
tsk
,
struct
list_head
*
firing
)
{
int
maxfire
;
struct
list_head
*
timers
=
tsk
->
cpu_timers
;
maxfire
=
20
;
tsk
->
it_prof_expires
=
cputime_zero
;
while
(
!
list_empty
(
timers
))
{
struct
cpu_timer_list
*
t
=
list_entry
(
timers
->
next
,
struct
cpu_timer_list
,
entry
);
if
(
cputime_lt
(
prof_ticks
(
tsk
),
t
->
expires
.
cpu
))
{
if
(
!--
maxfire
||
cputime_lt
(
prof_ticks
(
tsk
),
t
->
expires
.
cpu
))
{
tsk
->
it_prof_expires
=
t
->
expires
.
cpu
;
break
;
}
...
...
@@ -977,12 +978,13 @@ static void check_thread_timers(struct task_struct *tsk,
}
++
timers
;
maxfire
=
20
;
tsk
->
it_virt_expires
=
cputime_zero
;
while
(
!
list_empty
(
timers
))
{
struct
cpu_timer_list
*
t
=
list_entry
(
timers
->
next
,
struct
cpu_timer_list
,
entry
);
if
(
cputime_lt
(
virt_ticks
(
tsk
),
t
->
expires
.
cpu
))
{
if
(
!--
maxfire
||
cputime_lt
(
virt_ticks
(
tsk
),
t
->
expires
.
cpu
))
{
tsk
->
it_virt_expires
=
t
->
expires
.
cpu
;
break
;
}
...
...
@@ -991,12 +993,13 @@ static void check_thread_timers(struct task_struct *tsk,
}
++
timers
;
maxfire
=
20
;
tsk
->
it_sched_expires
=
0
;
while
(
!
list_empty
(
timers
))
{
struct
cpu_timer_list
*
t
=
list_entry
(
timers
->
next
,
struct
cpu_timer_list
,
entry
);
if
(
tsk
->
sched_time
<
t
->
expires
.
sched
)
{
if
(
!--
maxfire
||
tsk
->
sched_time
<
t
->
expires
.
sched
)
{
tsk
->
it_sched_expires
=
t
->
expires
.
sched
;
break
;
}
...
...
@@ -1013,6 +1016,7 @@ static void check_thread_timers(struct task_struct *tsk,
static
void
check_process_timers
(
struct
task_struct
*
tsk
,
struct
list_head
*
firing
)
{
int
maxfire
;
struct
signal_struct
*
const
sig
=
tsk
->
signal
;
cputime_t
utime
,
stime
,
ptime
,
virt_expires
,
prof_expires
;
unsigned
long
long
sched_time
,
sched_expires
;
...
...
@@ -1045,12 +1049,13 @@ static void check_process_timers(struct task_struct *tsk,
}
while
(
t
!=
tsk
);
ptime
=
cputime_add
(
utime
,
stime
);
maxfire
=
20
;
prof_expires
=
cputime_zero
;
while
(
!
list_empty
(
timers
))
{
struct
cpu_timer_list
*
t
=
list_entry
(
timers
->
next
,
struct
cpu_timer_list
,
entry
);
if
(
cputime_lt
(
ptime
,
t
->
expires
.
cpu
))
{
if
(
!--
maxfire
||
cputime_lt
(
ptime
,
t
->
expires
.
cpu
))
{
prof_expires
=
t
->
expires
.
cpu
;
break
;
}
...
...
@@ -1059,12 +1064,13 @@ static void check_process_timers(struct task_struct *tsk,
}
++
timers
;
maxfire
=
20
;
virt_expires
=
cputime_zero
;
while
(
!
list_empty
(
timers
))
{
struct
cpu_timer_list
*
t
=
list_entry
(
timers
->
next
,
struct
cpu_timer_list
,
entry
);
if
(
cputime_lt
(
utime
,
t
->
expires
.
cpu
))
{
if
(
!--
maxfire
||
cputime_lt
(
utime
,
t
->
expires
.
cpu
))
{
virt_expires
=
t
->
expires
.
cpu
;
break
;
}
...
...
@@ -1073,12 +1079,13 @@ static void check_process_timers(struct task_struct *tsk,
}
++
timers
;
maxfire
=
20
;
sched_expires
=
0
;
while
(
!
list_empty
(
timers
))
{
struct
cpu_timer_list
*
t
=
list_entry
(
timers
->
next
,
struct
cpu_timer_list
,
entry
);
if
(
sched_time
<
t
->
expires
.
sched
)
{
if
(
!--
maxfire
||
sched_time
<
t
->
expires
.
sched
)
{
sched_expires
=
t
->
expires
.
sched
;
break
;
}
...
...
@@ -1161,6 +1168,9 @@ static void check_process_timers(struct task_struct *tsk,
unsigned
long
long
sched_left
,
sched
;
const
unsigned
int
nthreads
=
atomic_read
(
&
sig
->
live
);
if
(
!
nthreads
)
return
;
prof_left
=
cputime_sub
(
prof_expires
,
utime
);
prof_left
=
cputime_sub
(
prof_left
,
stime
);
prof_left
=
cputime_div
(
prof_left
,
nthreads
);
...
...
@@ -1197,7 +1207,7 @@ static void check_process_timers(struct task_struct *tsk,
do
{
t
=
next_thread
(
t
);
}
while
(
unlikely
(
t
->
exit_state
));
}
while
(
unlikely
(
t
->
flags
&
PF_EXITING
));
}
while
(
t
!=
tsk
);
}
}
...
...
This diff is collapsed.
Click to expand it.
kernel/sched.c
浏览文件 @
cb650116
...
...
@@ -3879,6 +3879,7 @@ EXPORT_SYMBOL(cpu_present_map);
#ifndef CONFIG_SMP
cpumask_t
cpu_online_map
=
CPU_MASK_ALL
;
EXPORT_SYMBOL_GPL
(
cpu_online_map
);
cpumask_t
cpu_possible_map
=
CPU_MASK_ALL
;
#endif
...
...
This diff is collapsed.
Click to expand it.
lib/idr.c
浏览文件 @
cb650116
...
...
@@ -345,6 +345,19 @@ void idr_remove(struct idr *idp, int id)
}
EXPORT_SYMBOL
(
idr_remove
);
/**
* idr_destroy - release all cached layers within an idr tree
* idp: idr handle
*/
void
idr_destroy
(
struct
idr
*
idp
)
{
while
(
idp
->
id_free_cnt
)
{
struct
idr_layer
*
p
=
alloc_layer
(
idp
);
kmem_cache_free
(
idr_layer_cache
,
p
);
}
}
EXPORT_SYMBOL
(
idr_destroy
);
/**
* idr_find - return pointer for given id
* @idp: idr handle
...
...
This diff is collapsed.
Click to expand it.
mm/page_alloc.c
浏览文件 @
cb650116
...
...
@@ -1750,6 +1750,8 @@ inline void setup_pageset(struct per_cpu_pageset *p, unsigned long batch)
{
struct
per_cpu_pages
*
pcp
;
memset
(
p
,
0
,
sizeof
(
*
p
));
pcp
=
&
p
->
pcp
[
0
];
/* hot */
pcp
->
count
=
0
;
pcp
->
low
=
2
*
batch
;
...
...
This diff is collapsed.
Click to expand it.
net/802/tr.c
浏览文件 @
cb650116
...
...
@@ -340,9 +340,10 @@ static void tr_add_rif_info(struct trh_hdr *trh, struct net_device *dev)
unsigned
int
hash
,
rii_p
=
0
;
unsigned
long
flags
;
struct
rif_cache
*
entry
;
unsigned
char
saddr0
;
spin_lock_irqsave
(
&
rif_lock
,
flags
);
saddr0
=
trh
->
saddr
[
0
];
/*
* Firstly see if the entry exists
...
...
@@ -395,7 +396,6 @@ printk("adding rif_entry: addr:%02X:%02X:%02X:%02X:%02X:%02X rcf:%04X\n",
entry
->
rcf
=
trh
->
rcf
&
htons
((
unsigned
short
)
~
TR_RCF_BROADCAST_MASK
);
memcpy
(
&
(
entry
->
rseg
[
0
]),
&
(
trh
->
rseg
[
0
]),
8
*
sizeof
(
unsigned
short
));
entry
->
local_ring
=
0
;
trh
->
saddr
[
0
]
|=
TR_RII
;
/* put the routing indicator back for tcpdump */
}
else
{
...
...
@@ -422,6 +422,7 @@ printk("updating rif_entry: addr:%02X:%02X:%02X:%02X:%02X:%02X rcf:%04X\n",
}
entry
->
last_used
=
jiffies
;
}
trh
->
saddr
[
0
]
=
saddr0
;
/* put the routing indicator back for tcpdump */
spin_unlock_irqrestore
(
&
rif_lock
,
flags
);
}
...
...
This diff is collapsed.
Click to expand it.
net/core/neighbour.c
浏览文件 @
cb650116
...
...
@@ -175,39 +175,10 @@ static void pneigh_queue_purge(struct sk_buff_head *list)
}
}
void
neigh_changeaddr
(
struct
neigh_table
*
tbl
,
struct
net_device
*
dev
)
static
void
neigh_flush_dev
(
struct
neigh_table
*
tbl
,
struct
net_device
*
dev
)
{
int
i
;
write_lock_bh
(
&
tbl
->
lock
);
for
(
i
=
0
;
i
<=
tbl
->
hash_mask
;
i
++
)
{
struct
neighbour
*
n
,
**
np
;
np
=
&
tbl
->
hash_buckets
[
i
];
while
((
n
=
*
np
)
!=
NULL
)
{
if
(
dev
&&
n
->
dev
!=
dev
)
{
np
=
&
n
->
next
;
continue
;
}
*
np
=
n
->
next
;
write_lock_bh
(
&
n
->
lock
);
n
->
dead
=
1
;
neigh_del_timer
(
n
);
write_unlock_bh
(
&
n
->
lock
);
neigh_release
(
n
);
}
}
write_unlock_bh
(
&
tbl
->
lock
);
}
int
neigh_ifdown
(
struct
neigh_table
*
tbl
,
struct
net_device
*
dev
)
{
int
i
;
write_lock_bh
(
&
tbl
->
lock
);
for
(
i
=
0
;
i
<=
tbl
->
hash_mask
;
i
++
)
{
struct
neighbour
*
n
,
**
np
=
&
tbl
->
hash_buckets
[
i
];
...
...
@@ -243,7 +214,19 @@ int neigh_ifdown(struct neigh_table *tbl, struct net_device *dev)
neigh_release
(
n
);
}
}
}
void
neigh_changeaddr
(
struct
neigh_table
*
tbl
,
struct
net_device
*
dev
)
{
write_lock_bh
(
&
tbl
->
lock
);
neigh_flush_dev
(
tbl
,
dev
);
write_unlock_bh
(
&
tbl
->
lock
);
}
int
neigh_ifdown
(
struct
neigh_table
*
tbl
,
struct
net_device
*
dev
)
{
write_lock_bh
(
&
tbl
->
lock
);
neigh_flush_dev
(
tbl
,
dev
);
pneigh_ifdown
(
tbl
,
dev
);
write_unlock_bh
(
&
tbl
->
lock
);
...
...
@@ -732,6 +715,7 @@ static inline void neigh_add_timer(struct neighbour *n, unsigned long when)
if
(
unlikely
(
mod_timer
(
&
n
->
timer
,
when
)))
{
printk
(
"NEIGH: BUG, double timer add, state is %x
\n
"
,
n
->
nud_state
);
dump_stack
();
}
}
...
...
@@ -815,10 +799,10 @@ static void neigh_timer_handler(unsigned long arg)
}
if
(
neigh
->
nud_state
&
NUD_IN_TIMER
)
{
neigh_hold
(
neigh
);
if
(
time_before
(
next
,
jiffies
+
HZ
/
2
))
next
=
jiffies
+
HZ
/
2
;
neigh_add_timer
(
neigh
,
next
);
if
(
!
mod_timer
(
&
neigh
->
timer
,
next
))
neigh_hold
(
neigh
);
}
if
(
neigh
->
nud_state
&
(
NUD_INCOMPLETE
|
NUD_PROBE
))
{
struct
sk_buff
*
skb
=
skb_peek
(
&
neigh
->
arp_queue
);
...
...
This diff is collapsed.
Click to expand it.
net/core/skbuff.c
浏览文件 @
cb650116
...
...
@@ -410,6 +410,9 @@ struct sk_buff *skb_clone(struct sk_buff *skb, gfp_t gfp_mask)
C
(
nfct
);
nf_conntrack_get
(
skb
->
nfct
);
C
(
nfctinfo
);
#if defined(CONFIG_IP_VS) || defined(CONFIG_IP_VS_MODULE)
C
(
ipvs_property
);
#endif
#ifdef CONFIG_BRIDGE_NETFILTER
C
(
nf_bridge
);
nf_bridge_get
(
skb
->
nf_bridge
);
...
...
@@ -467,6 +470,9 @@ static void copy_skb_header(struct sk_buff *new, const struct sk_buff *old)
new
->
nfct
=
old
->
nfct
;
nf_conntrack_get
(
old
->
nfct
);
new
->
nfctinfo
=
old
->
nfctinfo
;
#if defined(CONFIG_IP_VS) || defined(CONFIG_IP_VS_MODULE)
new
->
ipvs_property
=
old
->
ipvs_property
;
#endif
#ifdef CONFIG_BRIDGE_NETFILTER
new
->
nf_bridge
=
old
->
nf_bridge
;
nf_bridge_get
(
old
->
nf_bridge
);
...
...
This diff is collapsed.
Click to expand it.
net/core/wireless.c
浏览文件 @
cb650116
...
...
@@ -455,10 +455,15 @@ static inline struct iw_statistics *get_wireless_stats(struct net_device *dev)
/* Old location, field to be removed in next WE */
if
(
dev
->
get_wireless_stats
)
{
printk
(
KERN_DEBUG
"%s (WE) : Driver using old /proc/net/wireless support, please fix driver !
\n
"
,
dev
->
name
);
static
int
printed_message
;
if
(
!
printed_message
++
)
printk
(
KERN_DEBUG
"%s (WE) : Driver using old /proc/net/wireless support, please fix driver !
\n
"
,
dev
->
name
);
return
dev
->
get_wireless_stats
(
dev
);
}
/* Not found */
return
(
struct
iw_statistics
*
)
NULL
;
}
...
...
This diff is collapsed.
Click to expand it.
net/ipv4/ip_output.c
浏览文件 @
cb650116
...
...
@@ -391,6 +391,9 @@ static void ip_copy_metadata(struct sk_buff *to, struct sk_buff *from)
to
->
nfct
=
from
->
nfct
;
nf_conntrack_get
(
to
->
nfct
);
to
->
nfctinfo
=
from
->
nfctinfo
;
#if defined(CONFIG_IP_VS) || defined(CONFIG_IP_VS_MODULE)
to
->
ipvs_property
=
from
->
ipvs_property
;
#endif
#ifdef CONFIG_BRIDGE_NETFILTER
nf_bridge_put
(
to
->
nf_bridge
);
to
->
nf_bridge
=
from
->
nf_bridge
;
...
...
This diff is collapsed.
Click to expand it.
net/ipv4/tcp_input.c
浏览文件 @
cb650116
...
...
@@ -2239,6 +2239,7 @@ static int tcp_ack_update_window(struct sock *sk, struct tcp_sock *tp,
/* Note, it is the only place, where
* fast path is recovered for sending TCP.
*/
tp
->
pred_flags
=
0
;
tcp_fast_path_check
(
sk
,
tp
);
if
(
nwin
>
tp
->
max_window
)
{
...
...
This diff is collapsed.
Click to expand it.
net/ipv6/ip6_flowlabel.c
浏览文件 @
cb650116
...
...
@@ -483,7 +483,7 @@ int ipv6_flowlabel_opt(struct sock *sk, char __user *optval, int optlen)
goto
done
;
}
fl1
=
sfl
->
fl
;
atomic_inc
(
&
fl
->
users
);
atomic_inc
(
&
fl
1
->
users
);
break
;
}
}
...
...
This diff is collapsed.
Click to expand it.
net/sunrpc/svcsock.c
浏览文件 @
cb650116
...
...
@@ -587,7 +587,7 @@ svc_udp_recvfrom(struct svc_rqst *rqstp)
struct
timeval
tv
;
tv
.
tv_sec
=
xtime
.
tv_sec
;
tv
.
tv_usec
=
xtime
.
tv_nsec
*
1000
;
tv
.
tv_usec
=
xtime
.
tv_nsec
/
NSEC_PER_USEC
;
skb_set_timestamp
(
skb
,
&
tv
);
/* Don't enable netstamp, sunrpc doesn't
need that much accuracy */
...
...
This diff is collapsed.
Click to expand it.
security/selinux/selinuxfs.c
浏览文件 @
cb650116
...
...
@@ -879,7 +879,7 @@ static ssize_t sel_commit_bools_write(struct file *filep,
if
(
sscanf
(
page
,
"%d"
,
&
new_value
)
!=
1
)
goto
out
;
if
(
new_value
)
{
if
(
new_value
&&
bool_pending_values
)
{
security_set_bools
(
bool_num
,
bool_pending_values
);
}
...
...
@@ -952,6 +952,7 @@ static int sel_make_bools(void)
/* remove any existing files */
kfree
(
bool_pending_values
);
bool_pending_values
=
NULL
;
sel_remove_bools
(
dir
);
...
...
@@ -1002,6 +1003,7 @@ static int sel_make_bools(void)
}
return
ret
;
err:
kfree
(
values
);
d_genocide
(
dir
);
ret
=
-
ENOMEM
;
goto
out
;
...
...
This diff is collapsed.
Click to expand it.
security/selinux/ss/policydb.c
浏览文件 @
cb650116
...
...
@@ -650,8 +650,10 @@ void policydb_destroy(struct policydb *p)
}
if
(
lrt
)
kfree
(
lrt
);
for
(
i
=
0
;
i
<
p
->
p_types
.
nprim
;
i
++
)
ebitmap_destroy
(
&
p
->
type_attr_map
[
i
]);
if
(
p
->
type_attr_map
)
{
for
(
i
=
0
;
i
<
p
->
p_types
.
nprim
;
i
++
)
ebitmap_destroy
(
&
p
->
type_attr_map
[
i
]);
}
kfree
(
p
->
type_attr_map
);
return
;
...
...
This diff is collapsed.
Click to expand it.
sound/core/init.c
浏览文件 @
cb650116
...
...
@@ -828,7 +828,8 @@ static int snd_generic_suspend(struct device *dev, pm_message_t state, u32 level
card
=
get_snd_generic_card
(
dev
);
if
(
card
->
power_state
==
SNDRV_CTL_POWER_D3hot
)
return
0
;
card
->
pm_suspend
(
card
,
PMSG_SUSPEND
);
if
(
card
->
pm_suspend
)
card
->
pm_suspend
(
card
,
PMSG_SUSPEND
);
snd_power_change_state
(
card
,
SNDRV_CTL_POWER_D3hot
);
return
0
;
}
...
...
@@ -843,7 +844,8 @@ static int snd_generic_resume(struct device *dev, u32 level)
card
=
get_snd_generic_card
(
dev
);
if
(
card
->
power_state
==
SNDRV_CTL_POWER_D0
)
return
0
;
card
->
pm_resume
(
card
);
if
(
card
->
pm_suspend
)
card
->
pm_resume
(
card
);
snd_power_change_state
(
card
,
SNDRV_CTL_POWER_D0
);
return
0
;
}
...
...
This diff is collapsed.
Click to expand it.
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录
反馈
建议
客服
返回
顶部