Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
45424376
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看板
提交
45424376
编写于
10月 28, 2005
作者:
P
Paul Mackerras
浏览文件
操作
浏览文件
下载
差异文件
Merge in v2.6.14 by hand
上级
2227718c
741b2252
变更
47
展开全部
隐藏空白更改
内联
并排
Showing
47 changed file
with
612 addition
and
411 deletion
+612
-411
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/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
浏览文件 @
45424376
此差异已折叠。
点击以展开。
Makefile
浏览文件 @
45424376
VERSION
=
2
PATCHLEVEL
=
6
SUBLEVEL
=
14
EXTRAVERSION
=
-rc5
EXTRAVERSION
=
NAME
=
Affluent Albatross
# *DOCUMENTATION*
...
...
arch/arm/mach-pxa/corgi_lcd.c
浏览文件 @
45424376
...
...
@@ -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
);
...
...
arch/um/include/sysdep-i386/thread.h
浏览文件 @
45424376
...
...
@@ -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
...
...
arch/um/include/sysdep-x86_64/thread.h
浏览文件 @
45424376
...
...
@@ -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
...
...
drivers/char/drm/radeon_cp.c
浏览文件 @
45424376
...
...
@@ -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
);
...
...
drivers/cpufreq/cpufreq_conservative.c
浏览文件 @
45424376
...
...
@@ -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
;
}
...
...
drivers/infiniband/hw/mthca/mthca_eq.c
浏览文件 @
45424376
...
...
@@ -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
,
...
...
drivers/md/md.c
浏览文件 @
45424376
...
...
@@ -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.
*/
...
...
drivers/media/video/Kconfig
浏览文件 @
45424376
...
...
@@ -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
...
...
drivers/pci/quirks.c
浏览文件 @
45424376
...
...
@@ -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
);
...
...
drivers/pci/setup-bus.c
浏览文件 @
45424376
...
...
@@ -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
...
...
drivers/scsi/NCR5380.c
浏览文件 @
45424376
...
...
@@ -91,7 +91,7 @@
#ifndef NDEBUG
#define NDEBUG 0
#endif
#ifndef NDEBUG
#ifndef NDEBUG
_ABORT
#define NDEBUG_ABORT 0
#endif
...
...
drivers/scsi/aacraid/aacraid.h
浏览文件 @
45424376
...
...
@@ -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
...
...
drivers/scsi/qla2xxx/qla_os.c
浏览文件 @
45424376
...
...
@@ -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
);
...
...
drivers/scsi/scsi_devinfo.c
浏览文件 @
45424376
...
...
@@ -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 */
...
...
drivers/scsi/scsi_lib.c
浏览文件 @
45424376
...
...
@@ -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
;
...
...
drivers/scsi/scsi_transport_fc.c
浏览文件 @
45424376
...
...
@@ -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
);
}
...
...
drivers/serial/8250_pci.c
浏览文件 @
45424376
...
...
@@ -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)
...
...
drivers/video/fbsysfs.c
浏览文件 @
45424376
...
...
@@ -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
)
...
...
fs/aio.c
浏览文件 @
45424376
...
...
@@ -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
;
...
...
fs/hfsplus/super.c
浏览文件 @
45424376
...
...
@@ -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:
...
...
fs/inotify.c
浏览文件 @
45424376
...
...
@@ -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
);
}
}
...
...
include/asm-alpha/atomic.h
浏览文件 @
45424376
#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
;
}
...
...
include/asm-alpha/barrier.h
0 → 100644
浏览文件 @
45424376
#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 */
include/asm-alpha/system.h
浏览文件 @
45424376
...
...
@@ -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")
...
...
include/asm-arm/bitops.h
浏览文件 @
45424376
...
...
@@ -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; }) )
...
...
include/asm-x86_64/pci.h
浏览文件 @
45424376
...
...
@@ -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
...
...
include/linux/idr.h
浏览文件 @
45424376
...
...
@@ -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
);
include/linux/pci_ids.h
浏览文件 @
45424376
...
...
@@ -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
...
...
include/net/ax25.h
浏览文件 @
45424376
...
...
@@ -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
{
...
...
include/net/llc_pdu.h
浏览文件 @
45424376
...
...
@@ -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
;
}
}
/**
...
...
kernel/posix-cpu-timers.c
浏览文件 @
45424376
...
...
@@ -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
);
}
}
...
...
kernel/sched.c
浏览文件 @
45424376
...
...
@@ -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
...
...
lib/idr.c
浏览文件 @
45424376
...
...
@@ -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
...
...
mm/page_alloc.c
浏览文件 @
45424376
...
...
@@ -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
;
...
...
net/802/tr.c
浏览文件 @
45424376
...
...
@@ -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
);
}
...
...
net/core/neighbour.c
浏览文件 @
45424376
...
...
@@ -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
);
...
...
net/core/skbuff.c
浏览文件 @
45424376
...
...
@@ -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
);
...
...
net/core/wireless.c
浏览文件 @
45424376
...
...
@@ -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
;
}
...
...
net/ipv4/ip_output.c
浏览文件 @
45424376
...
...
@@ -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
;
...
...
net/ipv4/tcp_input.c
浏览文件 @
45424376
...
...
@@ -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
)
{
...
...
net/ipv6/ip6_flowlabel.c
浏览文件 @
45424376
...
...
@@ -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
;
}
}
...
...
net/sunrpc/svcsock.c
浏览文件 @
45424376
...
...
@@ -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 */
...
...
security/selinux/selinuxfs.c
浏览文件 @
45424376
...
...
@@ -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
;
...
...
security/selinux/ss/policydb.c
浏览文件 @
45424376
...
...
@@ -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
;
...
...
sound/core/init.c
浏览文件 @
45424376
...
...
@@ -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
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录