mirror of https://gitee.com/openkylin/linux.git
Merge branch 'maybe-uninitialized' (patches from Arnd)
Merge fixes for -Wmaybe-uninitialized from Arnd Bergmann:
"It took a while for some patches to make it into mainline through
maintainer trees, but the 28-patch series is now reduced to 10, with
one tiny patch added at the end.
Aside from patches that are no longer required, I did these changes
compared to version 1:
- Dropped "iio: maxim_thermocouple: detect invalid storage size in
read()", which is currently in linux-next as commit 32cb7d27e6
.
This is the only remaining warning I see for a couple of corner
cases (kbuild bot reports it on blackfin, kernelci bot and arm-soc
bot both report it on arm64)
- Dropped "brcmfmac: avoid maybe-uninitialized warning in
brcmf_cfg80211_start_ap", which is currently in net/master merge
pending.
- Dropped two x86 patches, "x86: math-emu: possible uninitialized
variable use" and "x86: mark target address as output in 'insb'
asm" as they do not seem to trigger for a default build, and I got
no feedback on them. Both of these are ancient issues and seem
harmless, I will send them again to the x86 maintainers once the
rest is merged.
- Dropped "rbd: false-postive gcc-4.9 -Wmaybe-uninitialized" based on
feedback from Ilya Dryomov, who already has a different fix queued
up for v4.10. The kbuild bot reports this as a warning for xtensa.
- Replaced "crypto: aesni: avoid -Wmaybe-uninitialized warning" with
a simpler patch, this one always triggers but my first solution
would not be safe for linux-4.9 any more at this point. I'll follow
up with the larger patch as a cleanup for 4.10.
- Replaced "dib0700: fix nec repeat handling" with a better one,
contributed by Sean Young"
* -Wmaybe-uninitialized fixes:
Kbuild: enable -Wmaybe-uninitialized warnings by default
pcmcia: fix return value of soc_pcmcia_regulator_set
infiniband: shut up a maybe-uninitialized warning
crypto: aesni: shut up -Wmaybe-uninitialized warning
rc: print correct variable for z8f0811
dib0700: fix nec repeat handling
s390: pci: don't print uninitialized data for debugging
nios2: fix timer initcall return value
x86: apm: avoid uninitialized data
NFSv4.1: work around -Wmaybe-uninitialized warning
Kbuild: enable -Wmaybe-uninitialized warning for "make W=1"
This commit is contained in:
commit
015ed9433b
10
Makefile
10
Makefile
|
@ -370,7 +370,7 @@ LDFLAGS_MODULE =
|
|||
CFLAGS_KERNEL =
|
||||
AFLAGS_KERNEL =
|
||||
LDFLAGS_vmlinux =
|
||||
CFLAGS_GCOV = -fprofile-arcs -ftest-coverage -fno-tree-loop-im
|
||||
CFLAGS_GCOV = -fprofile-arcs -ftest-coverage -fno-tree-loop-im -Wno-maybe-uninitialized
|
||||
CFLAGS_KCOV := $(call cc-option,-fsanitize-coverage=trace-pc,)
|
||||
|
||||
|
||||
|
@ -620,7 +620,6 @@ ARCH_CFLAGS :=
|
|||
include arch/$(SRCARCH)/Makefile
|
||||
|
||||
KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks,)
|
||||
KBUILD_CFLAGS += $(call cc-disable-warning,maybe-uninitialized,)
|
||||
KBUILD_CFLAGS += $(call cc-disable-warning,frame-address,)
|
||||
|
||||
ifdef CONFIG_LD_DEAD_CODE_DATA_ELIMINATION
|
||||
|
@ -629,15 +628,18 @@ KBUILD_CFLAGS += $(call cc-option,-fdata-sections,)
|
|||
endif
|
||||
|
||||
ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
|
||||
KBUILD_CFLAGS += -Os
|
||||
KBUILD_CFLAGS += -Os $(call cc-disable-warning,maybe-uninitialized,)
|
||||
else
|
||||
ifdef CONFIG_PROFILE_ALL_BRANCHES
|
||||
KBUILD_CFLAGS += -O2
|
||||
KBUILD_CFLAGS += -O2 $(call cc-disable-warning,maybe-uninitialized,)
|
||||
else
|
||||
KBUILD_CFLAGS += -O2
|
||||
endif
|
||||
endif
|
||||
|
||||
KBUILD_CFLAGS += $(call cc-ifversion, -lt, 0409, \
|
||||
$(call cc-disable-warning,maybe-uninitialized,))
|
||||
|
||||
# Tell gcc to never replace conditional load with a non-conditional one
|
||||
KBUILD_CFLAGS += $(call cc-option,--param=allow-store-data-races=0)
|
||||
|
||||
|
|
|
@ -68,7 +68,9 @@ cflags-$(CONFIG_ARC_DW2_UNWIND) += -fasynchronous-unwind-tables $(cfi)
|
|||
ifndef CONFIG_CC_OPTIMIZE_FOR_SIZE
|
||||
# Generic build system uses -O2, we want -O3
|
||||
# Note: No need to add to cflags-y as that happens anyways
|
||||
ARCH_CFLAGS += -O3
|
||||
#
|
||||
# Disable the false maybe-uninitialized warings gcc spits out at -O3
|
||||
ARCH_CFLAGS += -O3 $(call cc-disable-warning,maybe-uninitialized,)
|
||||
endif
|
||||
|
||||
# small data is default for elf32 tool-chain. If not usable, disable it
|
||||
|
|
|
@ -324,6 +324,7 @@ static int __init nios2_time_init(struct device_node *timer)
|
|||
ret = nios2_clocksource_init(timer);
|
||||
break;
|
||||
default:
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -423,7 +423,7 @@ static int __s390_dma_map_sg(struct device *dev, struct scatterlist *sg,
|
|||
dma_addr_t dma_addr_base, dma_addr;
|
||||
int flags = ZPCI_PTE_VALID;
|
||||
struct scatterlist *s;
|
||||
unsigned long pa;
|
||||
unsigned long pa = 0;
|
||||
int ret;
|
||||
|
||||
size = PAGE_ALIGN(size);
|
||||
|
|
|
@ -888,7 +888,7 @@ static int helper_rfc4106_encrypt(struct aead_request *req)
|
|||
unsigned long auth_tag_len = crypto_aead_authsize(tfm);
|
||||
u8 iv[16] __attribute__ ((__aligned__(AESNI_ALIGN)));
|
||||
struct scatter_walk src_sg_walk;
|
||||
struct scatter_walk dst_sg_walk;
|
||||
struct scatter_walk dst_sg_walk = {};
|
||||
unsigned int i;
|
||||
|
||||
/* Assuming we are supporting rfc4106 64-bit extended */
|
||||
|
@ -968,7 +968,7 @@ static int helper_rfc4106_decrypt(struct aead_request *req)
|
|||
u8 iv[16] __attribute__ ((__aligned__(AESNI_ALIGN)));
|
||||
u8 authTag[16];
|
||||
struct scatter_walk src_sg_walk;
|
||||
struct scatter_walk dst_sg_walk;
|
||||
struct scatter_walk dst_sg_walk = {};
|
||||
unsigned int i;
|
||||
|
||||
if (unlikely(req->assoclen != 16 && req->assoclen != 20))
|
||||
|
|
|
@ -1042,8 +1042,11 @@ static int apm_get_power_status(u_short *status, u_short *bat, u_short *life)
|
|||
|
||||
if (apm_info.get_power_status_broken)
|
||||
return APM_32_UNSUPPORTED;
|
||||
if (apm_bios_call(&call))
|
||||
if (apm_bios_call(&call)) {
|
||||
if (!call.err)
|
||||
return APM_NO_ERROR;
|
||||
return call.err;
|
||||
}
|
||||
*status = call.ebx;
|
||||
*bat = call.ecx;
|
||||
if (apm_info.get_power_status_swabinminutes) {
|
||||
|
|
|
@ -1094,47 +1094,47 @@ static void cma_save_ib_info(struct sockaddr *src_addr,
|
|||
}
|
||||
}
|
||||
|
||||
static void cma_save_ip4_info(struct sockaddr *src_addr,
|
||||
struct sockaddr *dst_addr,
|
||||
static void cma_save_ip4_info(struct sockaddr_in *src_addr,
|
||||
struct sockaddr_in *dst_addr,
|
||||
struct cma_hdr *hdr,
|
||||
__be16 local_port)
|
||||
{
|
||||
struct sockaddr_in *ip4;
|
||||
|
||||
if (src_addr) {
|
||||
ip4 = (struct sockaddr_in *)src_addr;
|
||||
ip4->sin_family = AF_INET;
|
||||
ip4->sin_addr.s_addr = hdr->dst_addr.ip4.addr;
|
||||
ip4->sin_port = local_port;
|
||||
*src_addr = (struct sockaddr_in) {
|
||||
.sin_family = AF_INET,
|
||||
.sin_addr.s_addr = hdr->dst_addr.ip4.addr,
|
||||
.sin_port = local_port,
|
||||
};
|
||||
}
|
||||
|
||||
if (dst_addr) {
|
||||
ip4 = (struct sockaddr_in *)dst_addr;
|
||||
ip4->sin_family = AF_INET;
|
||||
ip4->sin_addr.s_addr = hdr->src_addr.ip4.addr;
|
||||
ip4->sin_port = hdr->port;
|
||||
*dst_addr = (struct sockaddr_in) {
|
||||
.sin_family = AF_INET,
|
||||
.sin_addr.s_addr = hdr->src_addr.ip4.addr,
|
||||
.sin_port = hdr->port,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
static void cma_save_ip6_info(struct sockaddr *src_addr,
|
||||
struct sockaddr *dst_addr,
|
||||
static void cma_save_ip6_info(struct sockaddr_in6 *src_addr,
|
||||
struct sockaddr_in6 *dst_addr,
|
||||
struct cma_hdr *hdr,
|
||||
__be16 local_port)
|
||||
{
|
||||
struct sockaddr_in6 *ip6;
|
||||
|
||||
if (src_addr) {
|
||||
ip6 = (struct sockaddr_in6 *)src_addr;
|
||||
ip6->sin6_family = AF_INET6;
|
||||
ip6->sin6_addr = hdr->dst_addr.ip6;
|
||||
ip6->sin6_port = local_port;
|
||||
*src_addr = (struct sockaddr_in6) {
|
||||
.sin6_family = AF_INET6,
|
||||
.sin6_addr = hdr->dst_addr.ip6,
|
||||
.sin6_port = local_port,
|
||||
};
|
||||
}
|
||||
|
||||
if (dst_addr) {
|
||||
ip6 = (struct sockaddr_in6 *)dst_addr;
|
||||
ip6->sin6_family = AF_INET6;
|
||||
ip6->sin6_addr = hdr->src_addr.ip6;
|
||||
ip6->sin6_port = hdr->port;
|
||||
*dst_addr = (struct sockaddr_in6) {
|
||||
.sin6_family = AF_INET6,
|
||||
.sin6_addr = hdr->src_addr.ip6,
|
||||
.sin6_port = hdr->port,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1159,10 +1159,12 @@ static int cma_save_ip_info(struct sockaddr *src_addr,
|
|||
|
||||
switch (cma_get_ip_ver(hdr)) {
|
||||
case 4:
|
||||
cma_save_ip4_info(src_addr, dst_addr, hdr, port);
|
||||
cma_save_ip4_info((struct sockaddr_in *)src_addr,
|
||||
(struct sockaddr_in *)dst_addr, hdr, port);
|
||||
break;
|
||||
case 6:
|
||||
cma_save_ip6_info(src_addr, dst_addr, hdr, port);
|
||||
cma_save_ip6_info((struct sockaddr_in6 *)src_addr,
|
||||
(struct sockaddr_in6 *)dst_addr, hdr, port);
|
||||
break;
|
||||
default:
|
||||
return -EAFNOSUPPORT;
|
||||
|
|
|
@ -118,7 +118,7 @@ static int get_key_haup_common(struct IR_i2c *ir, enum rc_type *protocol,
|
|||
*protocol = RC_TYPE_RC6_MCE;
|
||||
dev &= 0x7f;
|
||||
dprintk(1, "ir hauppauge (rc6-mce): t%d vendor=%d dev=%d code=%d\n",
|
||||
toggle, vendor, dev, code);
|
||||
*ptoggle, vendor, dev, code);
|
||||
} else {
|
||||
*ptoggle = 0;
|
||||
*protocol = RC_TYPE_RC6_6A_32;
|
||||
|
|
|
@ -704,7 +704,7 @@ static void dib0700_rc_urb_completion(struct urb *purb)
|
|||
struct dvb_usb_device *d = purb->context;
|
||||
struct dib0700_rc_response *poll_reply;
|
||||
enum rc_type protocol;
|
||||
u32 uninitialized_var(keycode);
|
||||
u32 keycode;
|
||||
u8 toggle;
|
||||
|
||||
deb_info("%s()\n", __func__);
|
||||
|
@ -745,7 +745,8 @@ static void dib0700_rc_urb_completion(struct urb *purb)
|
|||
poll_reply->nec.data == 0x00 &&
|
||||
poll_reply->nec.not_data == 0xff) {
|
||||
poll_reply->data_state = 2;
|
||||
break;
|
||||
rc_repeat(d->rc_dev);
|
||||
goto resubmit;
|
||||
}
|
||||
|
||||
if ((poll_reply->nec.data ^ poll_reply->nec.not_data) != 0xff) {
|
||||
|
|
|
@ -107,7 +107,7 @@ int soc_pcmcia_regulator_set(struct soc_pcmcia_socket *skt,
|
|||
|
||||
ret = regulator_enable(r->reg);
|
||||
} else {
|
||||
regulator_disable(r->reg);
|
||||
ret = regulator_disable(r->reg);
|
||||
}
|
||||
if (ret == 0)
|
||||
r->on = on;
|
||||
|
|
|
@ -36,6 +36,7 @@ warning-2 += -Wshadow
|
|||
warning-2 += $(call cc-option, -Wlogical-op)
|
||||
warning-2 += $(call cc-option, -Wmissing-field-initializers)
|
||||
warning-2 += $(call cc-option, -Wsign-compare)
|
||||
warning-2 += $(call cc-option, -Wmaybe-uninitialized)
|
||||
|
||||
warning-3 := -Wbad-function-cast
|
||||
warning-3 += -Wcast-qual
|
||||
|
|
|
@ -17,4 +17,8 @@ endif
|
|||
ifdef CONFIG_UBSAN_NULL
|
||||
CFLAGS_UBSAN += $(call cc-option, -fsanitize=null)
|
||||
endif
|
||||
|
||||
# -fsanitize=* options makes GCC less smart than usual and
|
||||
# increase number of 'maybe-uninitialized false-positives
|
||||
CFLAGS_UBSAN += $(call cc-option, -Wno-maybe-uninitialized)
|
||||
endif
|
||||
|
|
Loading…
Reference in New Issue