Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
25c43bf1
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
161
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
25c43bf1
编写于
9年前
作者:
D
David S. Miller
浏览文件
操作
浏览文件
下载
差异文件
Merge
git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
上级
a2f0fad3
c8d17b45
master
alk-4.19.24
alk-4.19.30
alk-4.19.34
alk-4.19.36
alk-4.19.43
alk-4.19.48
alk-4.19.57
ck-4.19.67
ck-4.19.81
ck-4.19.91
github/fork/deepanshu1422/fix-typo-in-comment
github/fork/haosdent/fix-typo
linux-next
v4.19.91
v4.19.90
v4.19.89
v4.19.88
v4.19.87
v4.19.86
v4.19.85
v4.19.84
v4.19.83
v4.19.82
v4.19.81
v4.19.80
v4.19.79
v4.19.78
v4.19.77
v4.19.76
v4.19.75
v4.19.74
v4.19.73
v4.19.72
v4.19.71
v4.19.70
v4.19.69
v4.19.68
v4.19.67
v4.19.66
v4.19.65
v4.19.64
v4.19.63
v4.19.62
v4.19.61
v4.19.60
v4.19.59
v4.19.58
v4.19.57
v4.19.56
v4.19.55
v4.19.54
v4.19.53
v4.19.52
v4.19.51
v4.19.50
v4.19.49
v4.19.48
v4.19.47
v4.19.46
v4.19.45
v4.19.44
v4.19.43
v4.19.42
v4.19.41
v4.19.40
v4.19.39
v4.19.38
v4.19.37
v4.19.36
v4.19.35
v4.19.34
v4.19.33
v4.19.32
v4.19.31
v4.19.30
v4.19.29
v4.19.28
v4.19.27
v4.19.26
v4.19.25
v4.19.24
v4.19.23
v4.19.22
v4.19.21
v4.19.20
v4.19.19
v4.19.18
v4.19.17
v4.19.16
v4.19.15
v4.19.14
v4.19.13
v4.19.12
v4.19.11
v4.19.10
v4.19.9
v4.19.8
v4.19.7
v4.19.6
v4.19.5
v4.19.4
v4.19.3
v4.19.2
v4.19.1
v4.19
v4.19-rc8
v4.19-rc7
v4.19-rc6
v4.19-rc5
v4.19-rc4
v4.19-rc3
v4.19-rc2
v4.19-rc1
ck-release-21
ck-release-20
ck-release-19.2
ck-release-19.1
ck-release-19
ck-release-18
ck-release-17.2
ck-release-17.1
ck-release-17
ck-release-16
ck-release-15.1
ck-release-15
ck-release-14
ck-release-13.2
ck-release-13
ck-release-12
ck-release-11
ck-release-10
ck-release-9
ck-release-7
alk-release-15
alk-release-14
alk-release-13.2
alk-release-13
alk-release-12
alk-release-11
alk-release-10
alk-release-9
alk-release-7
无相关合并请求
变更
38
隐藏空白更改
内联
并排
Showing
38 changed file
with
201 addition
and
89 deletion
+201
-89
Documentation/kernel-parameters.txt
Documentation/kernel-parameters.txt
+6
-0
Documentation/networking/udplite.txt
Documentation/networking/udplite.txt
+1
-1
arch/blackfin/include/asm/io.h
arch/blackfin/include/asm/io.h
+1
-0
arch/score/lib/string.S
arch/score/lib/string.S
+1
-1
arch/x86/kvm/mmu.c
arch/x86/kvm/mmu.c
+7
-7
block/blk-mq.c
block/blk-mq.c
+6
-2
block/genhd.c
block/genhd.c
+6
-6
drivers/block/Kconfig
drivers/block/Kconfig
+1
-0
drivers/block/zram/zram_drv.c
drivers/block/zram/zram_drv.c
+2
-0
drivers/gpu/drm/i915/intel_i2c.c
drivers/gpu/drm/i915/intel_i2c.c
+17
-3
drivers/gpu/drm/i915/intel_sdvo.c
drivers/gpu/drm/i915/intel_sdvo.c
+1
-1
drivers/gpu/drm/radeon/atombios_crtc.c
drivers/gpu/drm/radeon/atombios_crtc.c
+1
-6
drivers/gpu/drm/radeon/radeon_device.c
drivers/gpu/drm/radeon/radeon_device.c
+15
-0
drivers/gpu/drm/radeon/radeon_vm.c
drivers/gpu/drm/radeon/radeon_vm.c
+12
-5
drivers/input/mouse/synaptics.c
drivers/input/mouse/synaptics.c
+6
-1
drivers/iommu/intel-iommu.c
drivers/iommu/intel-iommu.c
+15
-3
drivers/md/md.c
drivers/md/md.c
+8
-6
drivers/md/raid10.c
drivers/md/raid10.c
+1
-0
drivers/md/raid5.c
drivers/md/raid5.c
+1
-0
drivers/net/ethernet/cisco/enic/enic_ethtool.c
drivers/net/ethernet/cisco/enic/enic_ethtool.c
+17
-3
drivers/net/ethernet/cisco/enic/enic_main.c
drivers/net/ethernet/cisco/enic/enic_main.c
+9
-2
drivers/net/ethernet/cisco/enic/vnic_rq.c
drivers/net/ethernet/cisco/enic/vnic_rq.c
+4
-5
drivers/net/ethernet/intel/igb/igb_ptp.c
drivers/net/ethernet/intel/igb/igb_ptp.c
+2
-2
include/linux/intel-iommu.h
include/linux/intel-iommu.h
+2
-1
kernel/sched/fair.c
kernel/sched/fair.c
+1
-1
kernel/trace/ring_buffer_benchmark.c
kernel/trace/ring_buffer_benchmark.c
+1
-1
mm/memcontrol.c
mm/memcontrol.c
+3
-3
mm/memory_hotplug.c
mm/memory_hotplug.c
+3
-1
mm/zsmalloc.c
mm/zsmalloc.c
+2
-1
net/bridge/br_multicast.c
net/bridge/br_multicast.c
+3
-4
net/core/skbuff.c
net/core/skbuff.c
+1
-1
net/core/sock.c
net/core/sock.c
+6
-9
net/ipv6/ip6_input.c
net/ipv6/ip6_input.c
+3
-5
net/mpls/af_mpls.c
net/mpls/af_mpls.c
+11
-0
net/sctp/auth.c
net/sctp/auth.c
+10
-1
net/tipc/socket.c
net/tipc/socket.c
+11
-5
net/wireless/wext-compat.c
net/wireless/wext-compat.c
+2
-0
scripts/checkpatch.pl
scripts/checkpatch.pl
+2
-2
未找到文件。
Documentation/kernel-parameters.txt
浏览文件 @
25c43bf1
...
...
@@ -1481,6 +1481,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
By default, super page will be supported if Intel IOMMU
has the capability. With this option, super page will
not be supported.
ecs_off [Default Off]
By default, extended context tables will be supported if
the hardware advertises that it has support both for the
extended tables themselves, and also PASID support. With
this option set, extended tables will not be used even
on hardware which claims to support them.
intel_idle.max_cstate= [KNL,HW,ACPI,X86]
0 disables intel_idle and fall back on acpi_idle.
...
...
This diff is collapsed.
Click to expand it.
Documentation/networking/udplite.txt
浏览文件 @
25c43bf1
...
...
@@ -20,7 +20,7 @@
files/UDP-Lite-HOWTO.txt
o The Wireshark UDP-Lite WiKi (with capture files):
http://wiki.wireshark.org/Lightweight_User_Datagram_Protocol
http
s
://wiki.wireshark.org/Lightweight_User_Datagram_Protocol
o The Protocol Spec, RFC 3828, http://www.ietf.org/rfc/rfc3828.txt
...
...
This diff is collapsed.
Click to expand it.
arch/blackfin/include/asm/io.h
浏览文件 @
25c43bf1
...
...
@@ -10,6 +10,7 @@
#include <linux/compiler.h>
#include <linux/types.h>
#include <asm/byteorder.h>
#include <asm/def_LPBlackfin.h>
#define __raw_readb bfin_read8
#define __raw_readw bfin_read16
...
...
This diff is collapsed.
Click to expand it.
arch/score/lib/string.S
浏览文件 @
25c43bf1
...
...
@@ -175,10 +175,10 @@ ENTRY(__clear_user)
br
r3
.
section
.
fixup
,
"ax"
99
:
br
r3
.
previous
.
section
__ex_table
,
"a"
.
align
2
99
:
.
word
0
b
,
99
b
.
previous
This diff is collapsed.
Click to expand it.
arch/x86/kvm/mmu.c
浏览文件 @
25c43bf1
...
...
@@ -4215,13 +4215,13 @@ void kvm_mmu_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa,
u64
entry
,
gentry
,
*
spte
;
int
npte
;
bool
remote_flush
,
local_flush
,
zap_page
;
union
kvm_mmu_page_role
mask
=
(
union
kvm_mmu_page_role
)
{
.
cr0_wp
=
1
,
.
cr4_pae
=
1
,
.
nxe
=
1
,
.
smep_andnot_wp
=
1
,
.
smap_andnot_wp
=
1
,
}
;
union
kvm_mmu_page_role
mask
=
{
};
mask
.
cr0_wp
=
1
;
mask
.
cr4_pae
=
1
;
mask
.
nxe
=
1
;
mask
.
smep_andnot_wp
=
1
;
mask
.
smap_andnot_wp
=
1
;
/*
* If we don't have indirect shadow pages, it means no page is
...
...
This diff is collapsed.
Click to expand it.
block/blk-mq.c
浏览文件 @
25c43bf1
...
...
@@ -1600,6 +1600,7 @@ static int blk_mq_hctx_notify(void *data, unsigned long action,
return
NOTIFY_OK
;
}
/* hctx->ctxs will be freed in queue's release handler */
static
void
blk_mq_exit_hctx
(
struct
request_queue
*
q
,
struct
blk_mq_tag_set
*
set
,
struct
blk_mq_hw_ctx
*
hctx
,
unsigned
int
hctx_idx
)
...
...
@@ -1618,7 +1619,6 @@ static void blk_mq_exit_hctx(struct request_queue *q,
blk_mq_unregister_cpu_notifier
(
&
hctx
->
cpu_notifier
);
blk_free_flush_queue
(
hctx
->
fq
);
kfree
(
hctx
->
ctxs
);
blk_mq_free_bitmap
(
&
hctx
->
ctx_map
);
}
...
...
@@ -1891,8 +1891,12 @@ void blk_mq_release(struct request_queue *q)
unsigned
int
i
;
/* hctx kobj stays in hctx */
queue_for_each_hw_ctx
(
q
,
hctx
,
i
)
queue_for_each_hw_ctx
(
q
,
hctx
,
i
)
{
if
(
!
hctx
)
continue
;
kfree
(
hctx
->
ctxs
);
kfree
(
hctx
);
}
kfree
(
q
->
queue_hw_ctx
);
...
...
This diff is collapsed.
Click to expand it.
block/genhd.c
浏览文件 @
25c43bf1
...
...
@@ -422,9 +422,9 @@ int blk_alloc_devt(struct hd_struct *part, dev_t *devt)
/* allocate ext devt */
idr_preload
(
GFP_KERNEL
);
spin_lock
(
&
ext_devt_lock
);
spin_lock
_bh
(
&
ext_devt_lock
);
idx
=
idr_alloc
(
&
ext_devt_idr
,
part
,
0
,
NR_EXT_DEVT
,
GFP_NOWAIT
);
spin_unlock
(
&
ext_devt_lock
);
spin_unlock
_bh
(
&
ext_devt_lock
);
idr_preload_end
();
if
(
idx
<
0
)
...
...
@@ -449,9 +449,9 @@ void blk_free_devt(dev_t devt)
return
;
if
(
MAJOR
(
devt
)
==
BLOCK_EXT_MAJOR
)
{
spin_lock
(
&
ext_devt_lock
);
spin_lock
_bh
(
&
ext_devt_lock
);
idr_remove
(
&
ext_devt_idr
,
blk_mangle_minor
(
MINOR
(
devt
)));
spin_unlock
(
&
ext_devt_lock
);
spin_unlock
_bh
(
&
ext_devt_lock
);
}
}
...
...
@@ -690,13 +690,13 @@ struct gendisk *get_gendisk(dev_t devt, int *partno)
}
else
{
struct
hd_struct
*
part
;
spin_lock
(
&
ext_devt_lock
);
spin_lock
_bh
(
&
ext_devt_lock
);
part
=
idr_find
(
&
ext_devt_idr
,
blk_mangle_minor
(
MINOR
(
devt
)));
if
(
part
&&
get_disk
(
part_to_disk
(
part
)))
{
*
partno
=
part
->
partno
;
disk
=
part_to_disk
(
part
);
}
spin_unlock
(
&
ext_devt_lock
);
spin_unlock
_bh
(
&
ext_devt_lock
);
}
return
disk
;
...
...
This diff is collapsed.
Click to expand it.
drivers/block/Kconfig
浏览文件 @
25c43bf1
...
...
@@ -406,6 +406,7 @@ config BLK_DEV_RAM_DAX
config BLK_DEV_PMEM
tristate "Persistent memory block device support"
depends on HAS_IOMEM
help
Saying Y here will allow you to use a contiguous range of reserved
memory as one or more persistent block devices.
...
...
This diff is collapsed.
Click to expand it.
drivers/block/zram/zram_drv.c
浏览文件 @
25c43bf1
...
...
@@ -805,7 +805,9 @@ static void zram_reset_device(struct zram *zram)
memset
(
&
zram
->
stats
,
0
,
sizeof
(
zram
->
stats
));
zram
->
disksize
=
0
;
zram
->
max_comp_streams
=
1
;
set_capacity
(
zram
->
disk
,
0
);
part_stat_set_all
(
&
zram
->
disk
->
part0
,
0
);
up_write
(
&
zram
->
init_lock
);
/* I/O operation under all of CPU are done so let's free */
...
...
This diff is collapsed.
Click to expand it.
drivers/gpu/drm/i915/intel_i2c.c
浏览文件 @
25c43bf1
...
...
@@ -435,7 +435,7 @@ gmbus_xfer(struct i2c_adapter *adapter,
struct
intel_gmbus
,
adapter
);
struct
drm_i915_private
*
dev_priv
=
bus
->
dev_priv
;
int
i
,
reg_offset
;
int
i
=
0
,
inc
,
try
=
0
,
reg_offset
;
int
ret
=
0
;
intel_aux_display_runtime_get
(
dev_priv
);
...
...
@@ -448,12 +448,14 @@ gmbus_xfer(struct i2c_adapter *adapter,
reg_offset
=
dev_priv
->
gpio_mmio_base
;
retry:
I915_WRITE
(
GMBUS0
+
reg_offset
,
bus
->
reg0
);
for
(
i
=
0
;
i
<
num
;
i
++
)
{
for
(;
i
<
num
;
i
+=
inc
)
{
inc
=
1
;
if
(
gmbus_is_index_read
(
msgs
,
i
,
num
))
{
ret
=
gmbus_xfer_index_read
(
dev_priv
,
&
msgs
[
i
]);
i
+=
1
;
/* set i to the index of the read xfer
*/
i
nc
=
2
;
/* an index read is two msgs
*/
}
else
if
(
msgs
[
i
].
flags
&
I2C_M_RD
)
{
ret
=
gmbus_xfer_read
(
dev_priv
,
&
msgs
[
i
],
0
);
}
else
{
...
...
@@ -525,6 +527,18 @@ gmbus_xfer(struct i2c_adapter *adapter,
adapter
->
name
,
msgs
[
i
].
addr
,
(
msgs
[
i
].
flags
&
I2C_M_RD
)
?
'r'
:
'w'
,
msgs
[
i
].
len
);
/*
* Passive adapters sometimes NAK the first probe. Retry the first
* message once on -ENXIO for GMBUS transfers; the bit banging algorithm
* has retries internally. See also the retry loop in
* drm_do_probe_ddc_edid, which bails out on the first -ENXIO.
*/
if
(
ret
==
-
ENXIO
&&
i
==
0
&&
try
++
==
0
)
{
DRM_DEBUG_KMS
(
"GMBUS [%s] NAK on first message, retry
\n
"
,
adapter
->
name
);
goto
retry
;
}
goto
out
;
timeout:
...
...
This diff is collapsed.
Click to expand it.
drivers/gpu/drm/i915/intel_sdvo.c
浏览文件 @
25c43bf1
...
...
@@ -2550,7 +2550,7 @@ intel_sdvo_analog_init(struct intel_sdvo *intel_sdvo, int device)
DRM_DEBUG_KMS
(
"initialising analog device %d
\n
"
,
device
);
intel_sdvo_connector
=
kzalloc
(
sizeof
(
*
intel_sdvo_connector
),
GFP_KERNEL
);
intel_sdvo_connector
=
intel_sdvo_connector_alloc
(
);
if
(
!
intel_sdvo_connector
)
return
false
;
...
...
This diff is collapsed.
Click to expand it.
drivers/gpu/drm/radeon/atombios_crtc.c
浏览文件 @
25c43bf1
...
...
@@ -580,9 +580,6 @@ static u32 atombios_adjust_pll(struct drm_crtc *crtc,
else
radeon_crtc
->
pll_flags
|=
RADEON_PLL_PREFER_LOW_REF_DIV
;
/* if there is no audio, set MINM_OVER_MAXP */
if
(
!
drm_detect_monitor_audio
(
radeon_connector_edid
(
connector
)))
radeon_crtc
->
pll_flags
|=
RADEON_PLL_PREFER_MINM_OVER_MAXP
;
if
(
rdev
->
family
<
CHIP_RV770
)
radeon_crtc
->
pll_flags
|=
RADEON_PLL_PREFER_MINM_OVER_MAXP
;
/* use frac fb div on APUs */
...
...
@@ -1798,9 +1795,7 @@ static int radeon_get_shared_nondp_ppll(struct drm_crtc *crtc)
if
((
crtc
->
mode
.
clock
==
test_crtc
->
mode
.
clock
)
&&
(
adjusted_clock
==
test_adjusted_clock
)
&&
(
radeon_crtc
->
ss_enabled
==
test_radeon_crtc
->
ss_enabled
)
&&
(
test_radeon_crtc
->
pll_id
!=
ATOM_PPLL_INVALID
)
&&
(
drm_detect_monitor_audio
(
radeon_connector_edid
(
test_radeon_crtc
->
connector
))
==
drm_detect_monitor_audio
(
radeon_connector_edid
(
radeon_crtc
->
connector
))))
(
test_radeon_crtc
->
pll_id
!=
ATOM_PPLL_INVALID
))
return
test_radeon_crtc
->
pll_id
;
}
}
...
...
This diff is collapsed.
Click to expand it.
drivers/gpu/drm/radeon/radeon_device.c
浏览文件 @
25c43bf1
...
...
@@ -1463,6 +1463,21 @@ int radeon_device_init(struct radeon_device *rdev,
if
(
r
)
DRM_ERROR
(
"ib ring test failed (%d).
\n
"
,
r
);
/*
* Turks/Thames GPU will freeze whole laptop if DPM is not restarted
* after the CP ring have chew one packet at least. Hence here we stop
* and restart DPM after the radeon_ib_ring_tests().
*/
if
(
rdev
->
pm
.
dpm_enabled
&&
(
rdev
->
pm
.
pm_method
==
PM_METHOD_DPM
)
&&
(
rdev
->
family
==
CHIP_TURKS
)
&&
(
rdev
->
flags
&
RADEON_IS_MOBILITY
))
{
mutex_lock
(
&
rdev
->
pm
.
mutex
);
radeon_dpm_disable
(
rdev
);
radeon_dpm_enable
(
rdev
);
mutex_unlock
(
&
rdev
->
pm
.
mutex
);
}
if
((
radeon_testing
&
1
))
{
if
(
rdev
->
accel_working
)
radeon_test_moves
(
rdev
);
...
...
This diff is collapsed.
Click to expand it.
drivers/gpu/drm/radeon/radeon_vm.c
浏览文件 @
25c43bf1
...
...
@@ -458,14 +458,16 @@ int radeon_vm_bo_set_addr(struct radeon_device *rdev,
/* make sure object fit at this offset */
eoffset
=
soffset
+
size
;
if
(
soffset
>=
eoffset
)
{
return
-
EINVAL
;
r
=
-
EINVAL
;
goto
error_unreserve
;
}
last_pfn
=
eoffset
/
RADEON_GPU_PAGE_SIZE
;
if
(
last_pfn
>
rdev
->
vm_manager
.
max_pfn
)
{
dev_err
(
rdev
->
dev
,
"va above limit (0x%08X > 0x%08X)
\n
"
,
last_pfn
,
rdev
->
vm_manager
.
max_pfn
);
return
-
EINVAL
;
r
=
-
EINVAL
;
goto
error_unreserve
;
}
}
else
{
...
...
@@ -486,7 +488,8 @@ int radeon_vm_bo_set_addr(struct radeon_device *rdev,
"(bo %p 0x%010lx 0x%010lx)
\n
"
,
bo_va
->
bo
,
soffset
,
tmp
->
bo
,
tmp
->
it
.
start
,
tmp
->
it
.
last
);
mutex_unlock
(
&
vm
->
mutex
);
return
-
EINVAL
;
r
=
-
EINVAL
;
goto
error_unreserve
;
}
}
...
...
@@ -497,7 +500,8 @@ int radeon_vm_bo_set_addr(struct radeon_device *rdev,
tmp
=
kzalloc
(
sizeof
(
struct
radeon_bo_va
),
GFP_KERNEL
);
if
(
!
tmp
)
{
mutex_unlock
(
&
vm
->
mutex
);
return
-
ENOMEM
;
r
=
-
ENOMEM
;
goto
error_unreserve
;
}
tmp
->
it
.
start
=
bo_va
->
it
.
start
;
tmp
->
it
.
last
=
bo_va
->
it
.
last
;
...
...
@@ -555,7 +559,6 @@ int radeon_vm_bo_set_addr(struct radeon_device *rdev,
r
=
radeon_vm_clear_bo
(
rdev
,
pt
);
if
(
r
)
{
radeon_bo_unref
(
&
pt
);
radeon_bo_reserve
(
bo_va
->
bo
,
false
);
return
r
;
}
...
...
@@ -575,6 +578,10 @@ int radeon_vm_bo_set_addr(struct radeon_device *rdev,
mutex_unlock
(
&
vm
->
mutex
);
return
0
;
error_unreserve:
radeon_bo_unreserve
(
bo_va
->
bo
);
return
r
;
}
/**
...
...
This diff is collapsed.
Click to expand it.
drivers/input/mouse/synaptics.c
浏览文件 @
25c43bf1
...
...
@@ -150,6 +150,11 @@ static const struct min_max_quirk min_max_pnpid_table[] = {
{
ANY_BOARD_ID
,
2961
},
1024
,
5112
,
2024
,
4832
},
{
(
const
char
*
const
[]){
"LEN2000"
,
NULL
},
{
ANY_BOARD_ID
,
ANY_BOARD_ID
},
1024
,
5113
,
2021
,
4832
},
{
(
const
char
*
const
[]){
"LEN2001"
,
NULL
},
{
ANY_BOARD_ID
,
ANY_BOARD_ID
},
...
...
@@ -191,7 +196,7 @@ static const char * const topbuttonpad_pnp_ids[] = {
"LEN0045"
,
"LEN0047"
,
"LEN0049"
,
"LEN2000"
,
"LEN2000"
,
/* S540 */
"LEN2001"
,
/* Edge E431 */
"LEN2002"
,
/* Edge E531 */
"LEN2003"
,
...
...
This diff is collapsed.
Click to expand it.
drivers/iommu/intel-iommu.c
浏览文件 @
25c43bf1
...
...
@@ -422,6 +422,14 @@ static int dmar_map_gfx = 1;
static
int
dmar_forcedac
;
static
int
intel_iommu_strict
;
static
int
intel_iommu_superpage
=
1
;
static
int
intel_iommu_ecs
=
1
;
/* We only actually use ECS when PASID support (on the new bit 40)
* is also advertised. Some early implementations — the ones with
* PASID support on bit 28 — have issues even when we *only* use
* extended root/context tables. */
#define ecs_enabled(iommu) (intel_iommu_ecs && ecap_ecs(iommu->ecap) && \
ecap_pasid(iommu->ecap))
int
intel_iommu_gfx_mapped
;
EXPORT_SYMBOL_GPL
(
intel_iommu_gfx_mapped
);
...
...
@@ -465,6 +473,10 @@ static int __init intel_iommu_setup(char *str)
printk
(
KERN_INFO
"Intel-IOMMU: disable supported super page
\n
"
);
intel_iommu_superpage
=
0
;
}
else
if
(
!
strncmp
(
str
,
"ecs_off"
,
7
))
{
printk
(
KERN_INFO
"Intel-IOMMU: disable extended context table support
\n
"
);
intel_iommu_ecs
=
0
;
}
str
+=
strcspn
(
str
,
","
);
...
...
@@ -669,7 +681,7 @@ static inline struct context_entry *iommu_context_addr(struct intel_iommu *iommu
struct
context_entry
*
context
;
u64
*
entry
;
if
(
ec
ap_ecs
(
iommu
->
ecap
))
{
if
(
ec
s_enabled
(
iommu
))
{
if
(
devfn
>=
0x80
)
{
devfn
-=
0x80
;
entry
=
&
root
->
hi
;
...
...
@@ -806,7 +818,7 @@ static void free_context_table(struct intel_iommu *iommu)
if
(
context
)
free_pgtable_page
(
context
);
if
(
!
ec
ap_ecs
(
iommu
->
ecap
))
if
(
!
ec
s_enabled
(
iommu
))
continue
;
context
=
iommu_context_addr
(
iommu
,
i
,
0x80
,
0
);
...
...
@@ -1141,7 +1153,7 @@ static void iommu_set_root_entry(struct intel_iommu *iommu)
unsigned
long
flag
;
addr
=
virt_to_phys
(
iommu
->
root_entry
);
if
(
ec
ap_ecs
(
iommu
->
ecap
))
if
(
ec
s_enabled
(
iommu
))
addr
|=
DMA_RTADDR_RTT
;
raw_spin_lock_irqsave
(
&
iommu
->
register_lock
,
flag
);
...
...
This diff is collapsed.
Click to expand it.
drivers/md/md.c
浏览文件 @
25c43bf1
...
...
@@ -3834,7 +3834,7 @@ array_state_store(struct mddev *mddev, const char *buf, size_t len)
err
=
-
EBUSY
;
}
spin_unlock
(
&
mddev
->
lock
);
return
err
;
return
err
?:
len
;
}
err
=
mddev_lock
(
mddev
);
if
(
err
)
...
...
@@ -4217,13 +4217,14 @@ action_store(struct mddev *mddev, const char *page, size_t len)
set_bit
(
MD_RECOVERY_FROZEN
,
&
mddev
->
recovery
);
else
clear_bit
(
MD_RECOVERY_FROZEN
,
&
mddev
->
recovery
);
flush_workqueue
(
md_misc_wq
);
if
(
mddev
->
sync_thread
)
{
set_bit
(
MD_RECOVERY_INTR
,
&
mddev
->
recovery
);
if
(
mddev_lock
(
mddev
)
==
0
)
{
if
(
test_bit
(
MD_RECOVERY_RUNNING
,
&
mddev
->
recovery
)
&&
mddev_lock
(
mddev
)
==
0
)
{
flush_workqueue
(
md_misc_wq
);
if
(
mddev
->
sync_thread
)
{
set_bit
(
MD_RECOVERY_INTR
,
&
mddev
->
recovery
);
md_reap_sync_thread
(
mddev
);
mddev_unlock
(
mddev
);
}
mddev_unlock
(
mddev
);
}
}
else
if
(
test_bit
(
MD_RECOVERY_RUNNING
,
&
mddev
->
recovery
)
||
test_bit
(
MD_RECOVERY_NEEDED
,
&
mddev
->
recovery
))
...
...
@@ -8261,6 +8262,7 @@ void md_reap_sync_thread(struct mddev *mddev)
if
(
mddev_is_clustered
(
mddev
))
md_cluster_ops
->
metadata_update_finish
(
mddev
);
clear_bit
(
MD_RECOVERY_RUNNING
,
&
mddev
->
recovery
);
clear_bit
(
MD_RECOVERY_DONE
,
&
mddev
->
recovery
);
clear_bit
(
MD_RECOVERY_SYNC
,
&
mddev
->
recovery
);
clear_bit
(
MD_RECOVERY_RESHAPE
,
&
mddev
->
recovery
);
clear_bit
(
MD_RECOVERY_REQUESTED
,
&
mddev
->
recovery
);
...
...
This diff is collapsed.
Click to expand it.
drivers/md/raid10.c
浏览文件 @
25c43bf1
...
...
@@ -4156,6 +4156,7 @@ static int raid10_start_reshape(struct mddev *mddev)
clear_bit
(
MD_RECOVERY_SYNC
,
&
mddev
->
recovery
);
clear_bit
(
MD_RECOVERY_CHECK
,
&
mddev
->
recovery
);
clear_bit
(
MD_RECOVERY_DONE
,
&
mddev
->
recovery
);
set_bit
(
MD_RECOVERY_RESHAPE
,
&
mddev
->
recovery
);
set_bit
(
MD_RECOVERY_RUNNING
,
&
mddev
->
recovery
);
...
...
This diff is collapsed.
Click to expand it.
drivers/md/raid5.c
浏览文件 @
25c43bf1
...
...
@@ -7354,6 +7354,7 @@ static int raid5_start_reshape(struct mddev *mddev)
clear_bit
(
MD_RECOVERY_SYNC
,
&
mddev
->
recovery
);
clear_bit
(
MD_RECOVERY_CHECK
,
&
mddev
->
recovery
);
clear_bit
(
MD_RECOVERY_DONE
,
&
mddev
->
recovery
);
set_bit
(
MD_RECOVERY_RESHAPE
,
&
mddev
->
recovery
);
set_bit
(
MD_RECOVERY_RUNNING
,
&
mddev
->
recovery
);
mddev
->
sync_thread
=
md_register_thread
(
md_do_sync
,
mddev
,
...
...
This diff is collapsed.
Click to expand it.
drivers/net/ethernet/cisco/enic/enic_ethtool.c
浏览文件 @
25c43bf1
...
...
@@ -131,8 +131,15 @@ static void enic_get_drvinfo(struct net_device *netdev,
{
struct
enic
*
enic
=
netdev_priv
(
netdev
);
struct
vnic_devcmd_fw_info
*
fw_info
;
int
err
;
enic_dev_fw_info
(
enic
,
&
fw_info
);
err
=
enic_dev_fw_info
(
enic
,
&
fw_info
);
/* return only when pci_zalloc_consistent fails in vnic_dev_fw_info
* For other failures, like devcmd failure, we return previously
* recorded info.
*/
if
(
err
==
-
ENOMEM
)
return
;
strlcpy
(
drvinfo
->
driver
,
DRV_NAME
,
sizeof
(
drvinfo
->
driver
));
strlcpy
(
drvinfo
->
version
,
DRV_VERSION
,
sizeof
(
drvinfo
->
version
));
...
...
@@ -181,8 +188,15 @@ static void enic_get_ethtool_stats(struct net_device *netdev,
struct
enic
*
enic
=
netdev_priv
(
netdev
);
struct
vnic_stats
*
vstats
;
unsigned
int
i
;
enic_dev_stats_dump
(
enic
,
&
vstats
);
int
err
;
err
=
enic_dev_stats_dump
(
enic
,
&
vstats
);
/* return only when pci_zalloc_consistent fails in vnic_dev_stats_dump
* For other failures, like devcmd failure, we return previously
* recorded stats.
*/
if
(
err
==
-
ENOMEM
)
return
;
for
(
i
=
0
;
i
<
enic_n_tx_stats
;
i
++
)
*
(
data
++
)
=
((
u64
*
)
&
vstats
->
tx
)[
enic_tx_stats
[
i
].
index
];
...
...
This diff is collapsed.
Click to expand it.
drivers/net/ethernet/cisco/enic/enic_main.c
浏览文件 @
25c43bf1
...
...
@@ -615,8 +615,15 @@ static struct rtnl_link_stats64 *enic_get_stats(struct net_device *netdev,
{
struct
enic
*
enic
=
netdev_priv
(
netdev
);
struct
vnic_stats
*
stats
;
int
err
;
enic_dev_stats_dump
(
enic
,
&
stats
);
err
=
enic_dev_stats_dump
(
enic
,
&
stats
);
/* return only when pci_zalloc_consistent fails in vnic_dev_stats_dump
* For other failures, like devcmd failure, we return previously
* recorded stats.
*/
if
(
err
==
-
ENOMEM
)
return
net_stats
;
net_stats
->
tx_packets
=
stats
->
tx
.
tx_frames_ok
;
net_stats
->
tx_bytes
=
stats
->
tx
.
tx_bytes_ok
;
...
...
@@ -1407,6 +1414,7 @@ static int enic_poll_msix_rq(struct napi_struct *napi, int budget)
*/
enic_calc_int_moderation
(
enic
,
&
enic
->
rq
[
rq
]);
enic_poll_unlock_napi
(
&
enic
->
rq
[
rq
]);
if
(
work_done
<
work_to_do
)
{
/* Some work done, but not enough to stay in polling,
...
...
@@ -1418,7 +1426,6 @@ static int enic_poll_msix_rq(struct napi_struct *napi, int budget)
enic_set_int_moderation
(
enic
,
&
enic
->
rq
[
rq
]);
vnic_intr_unmask
(
&
enic
->
intr
[
intr
]);
}
enic_poll_unlock_napi
(
&
enic
->
rq
[
rq
]);
return
work_done
;
}
...
...
This diff is collapsed.
Click to expand it.
drivers/net/ethernet/cisco/enic/vnic_rq.c
浏览文件 @
25c43bf1
...
...
@@ -188,16 +188,15 @@ void vnic_rq_clean(struct vnic_rq *rq,
struct
vnic_rq_buf
*
buf
;
u32
fetch_index
;
unsigned
int
count
=
rq
->
ring
.
desc_count
;
int
i
;
buf
=
rq
->
to_clean
;
while
(
vnic_rq_desc_used
(
rq
)
>
0
)
{
for
(
i
=
0
;
i
<
rq
->
ring
.
desc_count
;
i
++
)
{
(
*
buf_clean
)(
rq
,
buf
);
buf
=
rq
->
to_clean
=
buf
->
next
;
rq
->
ring
.
desc_avail
++
;
buf
=
buf
->
next
;
}
rq
->
ring
.
desc_avail
=
rq
->
ring
.
desc_count
-
1
;
/* Use current fetch_index as the ring starting point */
fetch_index
=
ioread32
(
&
rq
->
ctrl
->
fetch_index
);
...
...
This diff is collapsed.
Click to expand it.
drivers/net/ethernet/intel/igb/igb_ptp.c
浏览文件 @
25c43bf1
...
...
@@ -538,8 +538,8 @@ static int igb_ptp_feature_enable_i210(struct ptp_clock_info *ptp,
igb
->
perout
[
i
].
start
.
tv_nsec
=
rq
->
perout
.
start
.
nsec
;
igb
->
perout
[
i
].
period
.
tv_sec
=
ts
.
tv_sec
;
igb
->
perout
[
i
].
period
.
tv_nsec
=
ts
.
tv_nsec
;
wr32
(
trgttim
l
,
rq
->
perout
.
start
.
sec
);
wr32
(
trgttim
h
,
rq
->
perout
.
start
.
nsec
);
wr32
(
trgttim
h
,
rq
->
perout
.
start
.
sec
);
wr32
(
trgttim
l
,
rq
->
perout
.
start
.
nsec
);
tsauxc
|=
tsauxc_mask
;
tsim
|=
tsim_mask
;
}
else
{
...
...
This diff is collapsed.
Click to expand it.
include/linux/intel-iommu.h
浏览文件 @
25c43bf1
...
...
@@ -115,13 +115,14 @@ static inline void dmar_writeq(void __iomem *addr, u64 val)
* Extended Capability Register
*/
#define ecap_pasid(e) ((e >> 40) & 0x1)
#define ecap_pss(e) ((e >> 35) & 0x1f)
#define ecap_eafs(e) ((e >> 34) & 0x1)
#define ecap_nwfs(e) ((e >> 33) & 0x1)
#define ecap_srs(e) ((e >> 31) & 0x1)
#define ecap_ers(e) ((e >> 30) & 0x1)
#define ecap_prs(e) ((e >> 29) & 0x1)
#define ecap_pasid(e) ((e >> 28) & 0x1)
/* PASID support used to be on bit 28 */
#define ecap_dis(e) ((e >> 27) & 0x1)
#define ecap_nest(e) ((e >> 26) & 0x1)
#define ecap_mts(e) ((e >> 25) & 0x1)
...
...
This diff is collapsed.
Click to expand it.
kernel/sched/fair.c
浏览文件 @
25c43bf1
...
...
@@ -2181,7 +2181,7 @@ void task_numa_work(struct callback_head *work)
}
for
(;
vma
;
vma
=
vma
->
vm_next
)
{
if
(
!
vma_migratable
(
vma
)
||
!
vma_policy_mof
(
vma
)
||
is_vm_hugetlb_page
(
vma
))
{
is_vm_hugetlb_page
(
vma
)
||
(
vma
->
vm_flags
&
VM_MIXEDMAP
)
)
{
continue
;
}
...
...
This diff is collapsed.
Click to expand it.
kernel/trace/ring_buffer_benchmark.c
浏览文件 @
25c43bf1
...
...
@@ -450,7 +450,7 @@ static int __init ring_buffer_benchmark_init(void)
if
(
producer_fifo
>=
0
)
{
struct
sched_param
param
=
{
.
sched_priority
=
consum
er_fifo
.
sched_priority
=
produc
er_fifo
};
sched_setscheduler
(
producer
,
SCHED_FIFO
,
&
param
);
}
else
...
...
This diff is collapsed.
Click to expand it.
mm/memcontrol.c
浏览文件 @
25c43bf1
...
...
@@ -2323,6 +2323,8 @@ static int try_charge(struct mem_cgroup *memcg, gfp_t gfp_mask,
css_get_many
(
&
memcg
->
css
,
batch
);
if
(
batch
>
nr_pages
)
refill_stock
(
memcg
,
batch
-
nr_pages
);
if
(
!
(
gfp_mask
&
__GFP_WAIT
))
goto
done
;
/*
* If the hierarchy is above the normal consumption range,
* make the charging task trim their excess contribution.
...
...
@@ -5833,9 +5835,7 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry)
if
(
!
mem_cgroup_is_root
(
memcg
))
page_counter_uncharge
(
&
memcg
->
memory
,
1
);
/* XXX: caller holds IRQ-safe mapping->tree_lock */
VM_BUG_ON
(
!
irqs_disabled
());
/* Caller disabled preemption with mapping->tree_lock */
mem_cgroup_charge_statistics
(
memcg
,
page
,
-
1
);
memcg_check_events
(
memcg
,
page
);
}
...
...
This diff is collapsed.
Click to expand it.
mm/memory_hotplug.c
浏览文件 @
25c43bf1
...
...
@@ -1969,8 +1969,10 @@ void try_offline_node(int nid)
* wait_table may be allocated from boot memory,
* here only free if it's allocated by vmalloc.
*/
if
(
is_vmalloc_addr
(
zone
->
wait_table
))
if
(
is_vmalloc_addr
(
zone
->
wait_table
))
{
vfree
(
zone
->
wait_table
);
zone
->
wait_table
=
NULL
;
}
}
}
EXPORT_SYMBOL
(
try_offline_node
);
...
...
This diff is collapsed.
Click to expand it.
mm/zsmalloc.c
浏览文件 @
25c43bf1
...
...
@@ -289,7 +289,8 @@ static int create_handle_cache(struct zs_pool *pool)
static
void
destroy_handle_cache
(
struct
zs_pool
*
pool
)
{
kmem_cache_destroy
(
pool
->
handle_cachep
);
if
(
pool
->
handle_cachep
)
kmem_cache_destroy
(
pool
->
handle_cachep
);
}
static
unsigned
long
alloc_handle
(
struct
zs_pool
*
pool
)
...
...
This diff is collapsed.
Click to expand it.
net/bridge/br_multicast.c
浏览文件 @
25c43bf1
...
...
@@ -1164,6 +1164,9 @@ static void br_multicast_add_router(struct net_bridge *br,
struct
net_bridge_port
*
p
;
struct
hlist_node
*
slot
=
NULL
;
if
(
!
hlist_unhashed
(
&
port
->
rlist
))
return
;
hlist_for_each_entry
(
p
,
&
br
->
router_list
,
rlist
)
{
if
((
unsigned
long
)
port
>=
(
unsigned
long
)
p
)
break
;
...
...
@@ -1191,12 +1194,8 @@ static void br_multicast_mark_router(struct net_bridge *br,
if
(
port
->
multicast_router
!=
1
)
return
;
if
(
!
hlist_unhashed
(
&
port
->
rlist
))
goto
timer
;
br_multicast_add_router
(
br
,
port
);
timer:
mod_timer
(
&
port
->
multicast_router_timer
,
now
+
br
->
multicast_querier_interval
);
}
...
...
This diff is collapsed.
Click to expand it.
net/core/skbuff.c
浏览文件 @
25c43bf1
...
...
@@ -4467,7 +4467,7 @@ struct sk_buff *alloc_skb_with_frags(unsigned long header_len,
while
(
order
)
{
if
(
npages
>=
1
<<
order
)
{
page
=
alloc_pages
(
gfp_mask
|
page
=
alloc_pages
(
(
gfp_mask
&
~
__GFP_WAIT
)
|
__GFP_COMP
|
__GFP_NOWARN
|
__GFP_NORETRY
,
...
...
This diff is collapsed.
Click to expand it.
net/core/sock.c
浏览文件 @
25c43bf1
...
...
@@ -354,15 +354,12 @@ void sk_clear_memalloc(struct sock *sk)
/*
* SOCK_MEMALLOC is allowed to ignore rmem limits to ensure forward
* progress of swapping. However, if SOCK_MEMALLOC is cleared while
* it has rmem allocations there is a risk that the user of the
* socket cannot make forward progress due to exceeding the rmem
* limits. By rights, sk_clear_memalloc() should only be called
* on sockets being torn down but warn and reset the accounting if
* that assumption breaks.
* progress of swapping. SOCK_MEMALLOC may be cleared while
* it has rmem allocations due to the last swapfile being deactivated
* but there is a risk that the socket is unusable due to exceeding
* the rmem limits. Reclaim the reserves and obey rmem limits again.
*/
if
(
WARN_ON
(
sk
->
sk_forward_alloc
))
sk_mem_reclaim
(
sk
);
sk_mem_reclaim
(
sk
);
}
EXPORT_SYMBOL_GPL
(
sk_clear_memalloc
);
...
...
@@ -1872,7 +1869,7 @@ bool skb_page_frag_refill(unsigned int sz, struct page_frag *pfrag, gfp_t gfp)
pfrag
->
offset
=
0
;
if
(
SKB_FRAG_PAGE_ORDER
)
{
pfrag
->
page
=
alloc_pages
(
gfp
|
__GFP_COMP
|
pfrag
->
page
=
alloc_pages
(
(
gfp
&
~
__GFP_WAIT
)
|
__GFP_COMP
|
__GFP_NOWARN
|
__GFP_NORETRY
,
SKB_FRAG_PAGE_ORDER
);
if
(
likely
(
pfrag
->
page
))
{
...
...
This diff is collapsed.
Click to expand it.
net/ipv6/ip6_input.c
浏览文件 @
25c43bf1
...
...
@@ -212,13 +212,13 @@ static int ip6_input_finish(struct sock *sk, struct sk_buff *skb)
*/
rcu_read_lock
();
resubmit:
idev
=
ip6_dst_idev
(
skb_dst
(
skb
));
if
(
!
pskb_pull
(
skb
,
skb_transport_offset
(
skb
)))
goto
discard
;
nhoff
=
IP6CB
(
skb
)
->
nhoff
;
nexthdr
=
skb_network_header
(
skb
)[
nhoff
];
resubmit:
raw
=
raw6_local_deliver
(
skb
,
nexthdr
);
ipprot
=
rcu_dereference
(
inet6_protos
[
nexthdr
]);
if
(
ipprot
)
{
...
...
@@ -246,12 +246,10 @@ static int ip6_input_finish(struct sock *sk, struct sk_buff *skb)
goto
discard
;
ret
=
ipprot
->
handler
(
skb
);
if
(
ret
<
0
)
{
nexthdr
=
-
ret
;
if
(
ret
>
0
)
goto
resubmit
;
}
else
if
(
ret
==
0
)
{
else
if
(
ret
==
0
)
IP6_INC_STATS_BH
(
net
,
idev
,
IPSTATS_MIB_INDELIVERS
);
}
}
else
{
if
(
!
raw
)
{
if
(
xfrm6_policy_check
(
NULL
,
XFRM_POLICY_IN
,
skb
))
{
...
...
This diff is collapsed.
Click to expand it.
net/mpls/af_mpls.c
浏览文件 @
25c43bf1
...
...
@@ -564,6 +564,17 @@ static int mpls_dev_notify(struct notifier_block *this, unsigned long event,
case
NETDEV_UNREGISTER
:
mpls_ifdown
(
dev
);
break
;
case
NETDEV_CHANGENAME
:
mdev
=
mpls_dev_get
(
dev
);
if
(
mdev
)
{
int
err
;
mpls_dev_sysctl_unregister
(
mdev
);
err
=
mpls_dev_sysctl_register
(
dev
,
mdev
);
if
(
err
)
return
notifier_from_errno
(
err
);
}
break
;
}
return
NOTIFY_OK
;
}
...
...
This diff is collapsed.
Click to expand it.
net/sctp/auth.c
浏览文件 @
25c43bf1
...
...
@@ -381,13 +381,14 @@ int sctp_auth_asoc_copy_shkeys(const struct sctp_endpoint *ep,
}
/* Public interface to creat the association shared key.
/* Public interface to creat
e
the association shared key.
* See code above for the algorithm.
*/
int
sctp_auth_asoc_init_active_key
(
struct
sctp_association
*
asoc
,
gfp_t
gfp
)
{
struct
sctp_auth_bytes
*
secret
;
struct
sctp_shared_key
*
ep_key
;
struct
sctp_chunk
*
chunk
;
/* If we don't support AUTH, or peer is not capable
* we don't need to do anything.
...
...
@@ -410,6 +411,14 @@ int sctp_auth_asoc_init_active_key(struct sctp_association *asoc, gfp_t gfp)
sctp_auth_key_put
(
asoc
->
asoc_shared_key
);
asoc
->
asoc_shared_key
=
secret
;
/* Update send queue in case any chunk already in there now
* needs authenticating
*/
list_for_each_entry
(
chunk
,
&
asoc
->
outqueue
.
out_chunk_list
,
list
)
{
if
(
sctp_auth_send_cid
(
chunk
->
chunk_hdr
->
type
,
asoc
))
chunk
->
auth
=
1
;
}
return
0
;
}
...
...
This diff is collapsed.
Click to expand it.
net/tipc/socket.c
浏览文件 @
25c43bf1
...
...
@@ -2140,11 +2140,17 @@ static void tipc_sk_timeout(unsigned long data)
peer_node
=
tsk_peer_node
(
tsk
);
if
(
tsk
->
probing_state
==
TIPC_CONN_PROBING
)
{
/* Previous probe not answered -> self abort */
skb
=
tipc_msg_create
(
TIPC_CRITICAL_IMPORTANCE
,
TIPC_CONN_MSG
,
SHORT_H_SIZE
,
0
,
own_node
,
peer_node
,
tsk
->
portid
,
peer_port
,
TIPC_ERR_NO_PORT
);
if
(
!
sock_owned_by_user
(
sk
))
{
sk
->
sk_socket
->
state
=
SS_DISCONNECTING
;
tsk
->
connected
=
0
;
tipc_node_remove_conn
(
sock_net
(
sk
),
tsk_peer_node
(
tsk
),
tsk_peer_port
(
tsk
));
sk
->
sk_state_change
(
sk
);
}
else
{
/* Try again later */
sk_reset_timer
(
sk
,
&
sk
->
sk_timer
,
(
HZ
/
20
));
}
}
else
{
skb
=
tipc_msg_create
(
CONN_MANAGER
,
CONN_PROBE
,
INT_H_SIZE
,
0
,
peer_node
,
own_node
,
...
...
This diff is collapsed.
Click to expand it.
net/wireless/wext-compat.c
浏览文件 @
25c43bf1
...
...
@@ -1333,6 +1333,8 @@ static struct iw_statistics *cfg80211_wireless_stats(struct net_device *dev)
memcpy
(
bssid
,
wdev
->
current_bss
->
pub
.
bssid
,
ETH_ALEN
);
wdev_unlock
(
wdev
);
memset
(
&
sinfo
,
0
,
sizeof
(
sinfo
));
if
(
rdev_get_station
(
rdev
,
dev
,
bssid
,
&
sinfo
))
return
NULL
;
...
...
This diff is collapsed.
Click to expand it.
scripts/checkpatch.pl
浏览文件 @
25c43bf1
...
...
@@ -3169,12 +3169,12 @@ sub process {
}
# check for global initialisers.
if ($line =~ /^\+
(\s*$Type\s*$Ident\s*(?:\s+$Modifier))*\s*=\s*(
0|NULL|false)\s*;/) {
if ($line =~ /^\+
$Type\s*$Ident(?:\s+$Modifier)*\s*=\s*(?:
0|NULL|false)\s*;/) {
if (ERROR("GLOBAL_INITIALISERS",
"do not initialise globals to 0 or NULL\n" .
$herecurr) &&
$fix) {
$fixed[$fixlinenr] =~ s/(
$Type\s*$Ident\s*(?:\s+
$Modifier
))
*
\
s*=\s*(0|NULL|false)\s*
;
/$1;/
;
$fixed[$fixlinenr] =~ s/(
^.$Type\s*$Ident(?:\s+
$Modifier
)
*
)
\
s*=\s*(0|NULL|false)\s*
;
/$1;/
;
}
}
# check for static initialisers.
...
...
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录
反馈
建议
客服
返回
顶部