From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9DA17C282C3 for ; Thu, 24 Jan 2019 12:58:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 6385A21872 for ; Thu, 24 Jan 2019 12:58:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727918AbfAXM6f convert rfc822-to-8bit (ORCPT ); Thu, 24 Jan 2019 07:58:35 -0500 Received: from mail.emypeople.net ([216.220.167.73]:40611 "EHLO mail.emypeople.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727455AbfAXM6f (ORCPT ); Thu, 24 Jan 2019 07:58:35 -0500 Received: from Shop7 ([166.182.241.35]) by mail.emypeople.net (12.1.1 build 4 DEB9 x64) with ASMTP id 201901240758306826; Thu, 24 Jan 2019 07:58:30 -0500 From: "Edwin Zimmerman" To: "'Kees Cook'" , Cc: "'Ard Biesheuvel'" , "'Laura Abbott'" , "'Alexander Popov'" , , , , , , , , , , , , References: <20190123110349.35882-1-keescook@chromium.org> <20190123110349.35882-2-keescook@chromium.org> In-Reply-To: <20190123110349.35882-2-keescook@chromium.org> Subject: RE: [PATCH 1/3] treewide: Lift switch variables out of switches Date: Thu, 24 Jan 2019 07:58:32 -0500 Message-ID: <000501d4b3e4$83dd2290$8b9767b0$@211mainstreet.net> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8BIT X-Mailer: Microsoft Outlook 15.0 Content-Language: en-us Thread-Index: AQK1qhpX7cEQ8qlEpLW6qt3JZ7VVWQH3EeYfo+y7j7A= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wednesday, January 23, 2019 6:04 AM, Kees Cook wrote > > Variables declared in a switch statement before any case statements > cannot be initialized, so move all instances out of the switches. > After this, future always-initialized stack variables will work > and not throw warnings like this: > > fs/fcntl.c: In function ‘send_sigio_to_task’: > fs/fcntl.c:738:13: warning: statement will never be executed [-Wswitch-unreachable] > siginfo_t si; > ^~ > > Signed-off-by: Kees Cook Reviewed by: Edwin Zimmerman > --- > arch/x86/xen/enlighten_pv.c | 7 ++++--- > drivers/char/pcmcia/cm4000_cs.c | 2 +- > drivers/char/ppdev.c | 20 ++++++++----------- > drivers/gpu/drm/drm_edid.c | 4 ++-- > drivers/gpu/drm/i915/intel_display.c | 2 +- > drivers/gpu/drm/i915/intel_pm.c | 4 ++-- > drivers/net/ethernet/intel/e1000/e1000_main.c | 3 ++- > drivers/tty/n_tty.c | 3 +-- > drivers/usb/gadget/udc/net2280.c | 5 ++--- > fs/fcntl.c | 3 ++- > mm/shmem.c | 5 +++-- > net/core/skbuff.c | 4 ++-- > net/ipv6/ip6_gre.c | 4 ++-- > net/ipv6/ip6_tunnel.c | 4 ++-- > net/openvswitch/flow_netlink.c | 7 +++---- > security/tomoyo/common.c | 3 ++- > security/tomoyo/condition.c | 7 ++++--- > security/tomoyo/util.c | 4 ++-- > 18 files changed, 45 insertions(+), 46 deletions(-) > > diff --git a/arch/x86/xen/enlighten_pv.c b/arch/x86/xen/enlighten_pv.c > index c54a493e139a..a79d4b548a08 100644 > --- a/arch/x86/xen/enlighten_pv.c > +++ b/arch/x86/xen/enlighten_pv.c > @@ -907,14 +907,15 @@ static u64 xen_read_msr_safe(unsigned int msr, int *err) > static int xen_write_msr_safe(unsigned int msr, unsigned low, unsigned high) > { > int ret; > +#ifdef CONFIG_X86_64 > + unsigned which; > + u64 base; > +#endif > > ret = 0; > > switch (msr) { > #ifdef CONFIG_X86_64 > - unsigned which; > - u64 base; > - > case MSR_FS_BASE: which = SEGBASE_FS; goto set; > case MSR_KERNEL_GS_BASE: which = SEGBASE_GS_USER; goto set; > case MSR_GS_BASE: which = SEGBASE_GS_KERNEL; goto set; > diff --git a/drivers/char/pcmcia/cm4000_cs.c b/drivers/char/pcmcia/cm4000_cs.c > index 7a4eb86aedac..7211dc0e6f4f 100644 > --- a/drivers/char/pcmcia/cm4000_cs.c > +++ b/drivers/char/pcmcia/cm4000_cs.c > @@ -663,6 +663,7 @@ static void monitor_card(struct timer_list *t) > { > struct cm4000_dev *dev = from_timer(dev, t, timer); > unsigned int iobase = dev->p_dev->resource[0]->start; > + unsigned char flags0; > unsigned short s; > struct ptsreq ptsreq; > int i, atrc; > @@ -731,7 +732,6 @@ static void monitor_card(struct timer_list *t) > } > > switch (dev->mstate) { > - unsigned char flags0; > case M_CARDOFF: > DEBUGP(4, dev, "M_CARDOFF\n"); > flags0 = inb(REG_FLAGS0(iobase)); > diff --git a/drivers/char/ppdev.c b/drivers/char/ppdev.c > index 1ae77b41050a..d77c97e4f996 100644 > --- a/drivers/char/ppdev.c > +++ b/drivers/char/ppdev.c > @@ -359,14 +359,19 @@ static int pp_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg) > struct pp_struct *pp = file->private_data; > struct parport *port; > void __user *argp = (void __user *)arg; > + struct ieee1284_info *info; > + unsigned char reg; > + unsigned char mask; > + int mode; > + s32 time32[2]; > + s64 time64[2]; > + struct timespec64 ts; > + int ret; > > /* First handle the cases that don't take arguments. */ > switch (cmd) { > case PPCLAIM: > { > - struct ieee1284_info *info; > - int ret; > - > if (pp->flags & PP_CLAIMED) { > dev_dbg(&pp->pdev->dev, "you've already got it!\n"); > return -EINVAL; > @@ -517,15 +522,6 @@ static int pp_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg) > > port = pp->pdev->port; > switch (cmd) { > - struct ieee1284_info *info; > - unsigned char reg; > - unsigned char mask; > - int mode; > - s32 time32[2]; > - s64 time64[2]; > - struct timespec64 ts; > - int ret; > - > case PPRSTATUS: > reg = parport_read_status(port); > if (copy_to_user(argp, ®, sizeof(reg))) > diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c > index b506e3622b08..8f93956c1628 100644 > --- a/drivers/gpu/drm/drm_edid.c > +++ b/drivers/gpu/drm/drm_edid.c > @@ -3942,12 +3942,12 @@ static void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid) > } > > for_each_cea_db(cea, i, start, end) { > + int sad_count; > + > db = &cea[i]; > dbl = cea_db_payload_len(db); > > switch (cea_db_tag(db)) { > - int sad_count; > - > case AUDIO_BLOCK: > /* Audio Data Block, contains SADs */ > sad_count = min(dbl / 3, 15 - total_sad_count); > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index 3da9c0f9e948..aa1c2ebea456 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -11341,6 +11341,7 @@ static bool check_digital_port_conflicts(struct drm_atomic_state *state) > drm_for_each_connector_iter(connector, &conn_iter) { > struct drm_connector_state *connector_state; > struct intel_encoder *encoder; > + unsigned int port_mask; > > connector_state = drm_atomic_get_new_connector_state(state, connector); > if (!connector_state) > @@ -11354,7 +11355,6 @@ static bool check_digital_port_conflicts(struct drm_atomic_state *state) > WARN_ON(!connector_state->crtc); > > switch (encoder->type) { > - unsigned int port_mask; > case INTEL_OUTPUT_DDI: > if (WARN_ON(!HAS_DDI(to_i915(dev)))) > break; > diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c > index a26b4eddda25..c135fdec96b3 100644 > --- a/drivers/gpu/drm/i915/intel_pm.c > +++ b/drivers/gpu/drm/i915/intel_pm.c > @@ -478,9 +478,9 @@ static void vlv_get_fifo_size(struct intel_crtc_state *crtc_state) > struct vlv_fifo_state *fifo_state = &crtc_state->wm.vlv.fifo_state; > enum pipe pipe = crtc->pipe; > int sprite0_start, sprite1_start; > + uint32_t dsparb, dsparb2, dsparb3; > > switch (pipe) { > - uint32_t dsparb, dsparb2, dsparb3; > case PIPE_A: > dsparb = I915_READ(DSPARB); > dsparb2 = I915_READ(DSPARB2); > @@ -1944,6 +1944,7 @@ static void vlv_atomic_update_fifo(struct intel_atomic_state *state, > const struct vlv_fifo_state *fifo_state = > &crtc_state->wm.vlv.fifo_state; > int sprite0_start, sprite1_start, fifo_size; > + uint32_t dsparb, dsparb2, dsparb3; > > if (!crtc_state->fifo_changed) > return; > @@ -1969,7 +1970,6 @@ static void vlv_atomic_update_fifo(struct intel_atomic_state *state, > spin_lock(&dev_priv->uncore.lock); > > switch (crtc->pipe) { > - uint32_t dsparb, dsparb2, dsparb3; > case PIPE_A: > dsparb = I915_READ_FW(DSPARB); > dsparb2 = I915_READ_FW(DSPARB2); > diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c > index 8fe9af0e2ab7..041062736845 100644 > --- a/drivers/net/ethernet/intel/e1000/e1000_main.c > +++ b/drivers/net/ethernet/intel/e1000/e1000_main.c > @@ -3140,8 +3140,9 @@ static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb, > > hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb); > if (skb->data_len && hdr_len == len) { > + unsigned int pull_size; > + > switch (hw->mac_type) { > - unsigned int pull_size; > case e1000_82544: > /* Make sure we have room to chop off 4 bytes, > * and that the end alignment will work out to > diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c > index 5dc9686697cf..eafb39157281 100644 > --- a/drivers/tty/n_tty.c > +++ b/drivers/tty/n_tty.c > @@ -634,6 +634,7 @@ static size_t __process_echoes(struct tty_struct *tty) > while (MASK(ldata->echo_commit) != MASK(tail)) { > c = echo_buf(ldata, tail); > if (c == ECHO_OP_START) { > + unsigned int num_chars, num_bs; > unsigned char op; > int no_space_left = 0; > > @@ -652,8 +653,6 @@ static size_t __process_echoes(struct tty_struct *tty) > op = echo_buf(ldata, tail + 1); > > switch (op) { > - unsigned int num_chars, num_bs; > - > case ECHO_OP_ERASE_TAB: > if (MASK(ldata->echo_commit) == MASK(tail + 2)) > goto not_yet_stored; > diff --git a/drivers/usb/gadget/udc/net2280.c b/drivers/usb/gadget/udc/net2280.c > index e7dae5379e04..2b275a574e94 100644 > --- a/drivers/usb/gadget/udc/net2280.c > +++ b/drivers/usb/gadget/udc/net2280.c > @@ -2854,16 +2854,15 @@ static void ep_clear_seqnum(struct net2280_ep *ep) > static void handle_stat0_irqs_superspeed(struct net2280 *dev, > struct net2280_ep *ep, struct usb_ctrlrequest r) > { > + struct net2280_ep *e; > int tmp = 0; > + u16 status; > > #define w_value le16_to_cpu(r.wValue) > #define w_index le16_to_cpu(r.wIndex) > #define w_length le16_to_cpu(r.wLength) > > switch (r.bRequest) { > - struct net2280_ep *e; > - u16 status; > - > case USB_REQ_SET_CONFIGURATION: > dev->addressed_state = !w_value; > goto usb3_delegate; > diff --git a/fs/fcntl.c b/fs/fcntl.c > index 083185174c6d..0640b64ecdc2 100644 > --- a/fs/fcntl.c > +++ b/fs/fcntl.c > @@ -725,6 +725,8 @@ static void send_sigio_to_task(struct task_struct *p, > struct fown_struct *fown, > int fd, int reason, enum pid_type type) > { > + kernel_siginfo_t si; > + > /* > * F_SETSIG can change ->signum lockless in parallel, make > * sure we read it once and use the same value throughout. > @@ -735,7 +737,6 @@ static void send_sigio_to_task(struct task_struct *p, > return; > > switch (signum) { > - kernel_siginfo_t si; > default: > /* Queue a rt signal with the appropriate fd as its > value. We use SI_SIGIO as the source, not > diff --git a/mm/shmem.c b/mm/shmem.c > index 6ece1e2fe76e..0b02624dd8b2 100644 > --- a/mm/shmem.c > +++ b/mm/shmem.c > @@ -1721,6 +1721,9 @@ static int shmem_getpage_gfp(struct inode *inode, pgoff_t index, > swap_free(swap); > > } else { > + loff_t i_size; > + pgoff_t off; > + > if (vma && userfaultfd_missing(vma)) { > *fault_type = handle_userfault(vmf, VM_UFFD_MISSING); > return 0; > @@ -1734,8 +1737,6 @@ static int shmem_getpage_gfp(struct inode *inode, pgoff_t index, > if (shmem_huge == SHMEM_HUGE_FORCE) > goto alloc_huge; > switch (sbinfo->huge) { > - loff_t i_size; > - pgoff_t off; > case SHMEM_HUGE_NEVER: > goto alloc_nohuge; > case SHMEM_HUGE_WITHIN_SIZE: > diff --git a/net/core/skbuff.c b/net/core/skbuff.c > index 26d848484912..7597b3fc9d21 100644 > --- a/net/core/skbuff.c > +++ b/net/core/skbuff.c > @@ -4506,9 +4506,9 @@ static __sum16 *skb_checksum_setup_ip(struct sk_buff *skb, > typeof(IPPROTO_IP) proto, > unsigned int off) > { > - switch (proto) { > - int err; > + int err; > > + switch (proto) { > case IPPROTO_TCP: > err = skb_maybe_pull_tail(skb, off + sizeof(struct tcphdr), > off + MAX_TCP_HDR_LEN); > diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c > index b1be67ca6768..9aee1add46c0 100644 > --- a/net/ipv6/ip6_gre.c > +++ b/net/ipv6/ip6_gre.c > @@ -427,9 +427,11 @@ static int ip6gre_err(struct sk_buff *skb, struct inet6_skb_parm *opt, > u8 type, u8 code, int offset, __be32 info) > { > struct net *net = dev_net(skb->dev); > + struct ipv6_tlv_tnl_enc_lim *tel; > const struct ipv6hdr *ipv6h; > struct tnl_ptk_info tpi; > struct ip6_tnl *t; > + __u32 teli; > > if (gre_parse_header(skb, &tpi, NULL, htons(ETH_P_IPV6), > offset) < 0) > @@ -442,8 +444,6 @@ static int ip6gre_err(struct sk_buff *skb, struct inet6_skb_parm *opt, > return -ENOENT; > > switch (type) { > - struct ipv6_tlv_tnl_enc_lim *tel; > - __u32 teli; > case ICMPV6_DEST_UNREACH: > net_dbg_ratelimited("%s: Path to destination invalid or inactive!\n", > t->parms.name); > diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c > index 0c6403cf8b52..94ccc7a9037b 100644 > --- a/net/ipv6/ip6_tunnel.c > +++ b/net/ipv6/ip6_tunnel.c > @@ -478,10 +478,12 @@ ip6_tnl_err(struct sk_buff *skb, __u8 ipproto, struct inet6_skb_parm *opt, > struct net *net = dev_net(skb->dev); > u8 rel_type = ICMPV6_DEST_UNREACH; > u8 rel_code = ICMPV6_ADDR_UNREACH; > + struct ipv6_tlv_tnl_enc_lim *tel; > __u32 rel_info = 0; > struct ip6_tnl *t; > int err = -ENOENT; > int rel_msg = 0; > + __u32 mtu, teli; > u8 tproto; > __u16 len; > > @@ -501,8 +503,6 @@ ip6_tnl_err(struct sk_buff *skb, __u8 ipproto, struct inet6_skb_parm *opt, > err = 0; > > switch (*type) { > - struct ipv6_tlv_tnl_enc_lim *tel; > - __u32 mtu, teli; > case ICMPV6_DEST_UNREACH: > net_dbg_ratelimited("%s: Path to destination invalid or inactive!\n", > t->parms.name); > diff --git a/net/openvswitch/flow_netlink.c b/net/openvswitch/flow_netlink.c > index 691da853bef5..dee2f9516ae8 100644 > --- a/net/openvswitch/flow_netlink.c > +++ b/net/openvswitch/flow_netlink.c > @@ -2652,8 +2652,11 @@ static int validate_set(const struct nlattr *a, > u8 mac_proto, __be16 eth_type, bool masked, bool log) > { > const struct nlattr *ovs_key = nla_data(a); > + const struct ovs_key_ipv4 *ipv4_key; > + const struct ovs_key_ipv6 *ipv6_key; > int key_type = nla_type(ovs_key); > size_t key_len; > + int err; > > /* There can be only one key in a action */ > if (nla_total_size(nla_len(ovs_key)) != nla_len(a)) > @@ -2671,10 +2674,6 @@ static int validate_set(const struct nlattr *a, > return -EINVAL; > > switch (key_type) { > - const struct ovs_key_ipv4 *ipv4_key; > - const struct ovs_key_ipv6 *ipv6_key; > - int err; > - > case OVS_KEY_ATTR_PRIORITY: > case OVS_KEY_ATTR_SKB_MARK: > case OVS_KEY_ATTR_CT_MARK: > diff --git a/security/tomoyo/common.c b/security/tomoyo/common.c > index c598aa00d5e3..bedbd0518153 100644 > --- a/security/tomoyo/common.c > +++ b/security/tomoyo/common.c > @@ -1583,8 +1583,9 @@ static void tomoyo_read_domain(struct tomoyo_io_buffer *head) > list_for_each_cookie(head->r.domain, &tomoyo_domain_list) { > struct tomoyo_domain_info *domain = > list_entry(head->r.domain, typeof(*domain), list); > + u8 i; > + > switch (head->r.step) { > - u8 i; > case 0: > if (domain->is_deleted && > !head->r.print_this_domain_only) > diff --git a/security/tomoyo/condition.c b/security/tomoyo/condition.c > index 8d0e1b9c9c57..c10d903febe5 100644 > --- a/security/tomoyo/condition.c > +++ b/security/tomoyo/condition.c > @@ -787,10 +787,11 @@ bool tomoyo_condition(struct tomoyo_request_info *r, > /* Check string expressions. */ > if (right == TOMOYO_NAME_UNION) { > const struct tomoyo_name_union *ptr = names_p++; > + struct tomoyo_path_info *symlink; > + struct tomoyo_execve *ee; > + struct file *file; > + > switch (left) { > - struct tomoyo_path_info *symlink; > - struct tomoyo_execve *ee; > - struct file *file; > case TOMOYO_SYMLINK_TARGET: > symlink = obj ? obj->symlink_target : NULL; > if (!symlink || > diff --git a/security/tomoyo/util.c b/security/tomoyo/util.c > index badffc8271c8..8e2bb36df37b 100644 > --- a/security/tomoyo/util.c > +++ b/security/tomoyo/util.c > @@ -668,6 +668,8 @@ static bool tomoyo_file_matches_pattern2(const char *filename, > { > while (filename < filename_end && pattern < pattern_end) { > char c; > + int i, j; > + > if (*pattern != '\\') { > if (*filename++ != *pattern++) > return false; > @@ -676,8 +678,6 @@ static bool tomoyo_file_matches_pattern2(const char *filename, > c = *filename; > pattern++; > switch (*pattern) { > - int i; > - int j; > case '?': > if (c == '/') { > return false; > -- > 2.17.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.emypeople.net ([216.220.167.73]:40611 "EHLO mail.emypeople.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727455AbfAXM6f (ORCPT ); Thu, 24 Jan 2019 07:58:35 -0500 From: "Edwin Zimmerman" References: <20190123110349.35882-1-keescook@chromium.org> <20190123110349.35882-2-keescook@chromium.org> In-Reply-To: <20190123110349.35882-2-keescook@chromium.org> Subject: RE: [PATCH 1/3] treewide: Lift switch variables out of switches Date: Thu, 24 Jan 2019 07:58:32 -0500 Message-ID: <000501d4b3e4$83dd2290$8b9767b0$@211mainstreet.net> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8BIT Content-Language: en-us Sender: linux-kbuild-owner@vger.kernel.org List-ID: To: 'Kees Cook' , linux-kernel@vger.kernel.org Cc: 'Ard Biesheuvel' , 'Laura Abbott' , 'Alexander Popov' , xen-devel@lists.xenproject.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-wired-lan@lists.osuosl.org, netdev@vger.kernel.org, linux-usb@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, dev@openvswitch.org, linux-kbuild@vger.kernel.org, linux-security-module@vger.kernel.org, kernel-hardening@lists.openwall.com On Wednesday, January 23, 2019 6:04 AM, Kees Cook wrote > > Variables declared in a switch statement before any case statements > cannot be initialized, so move all instances out of the switches. > After this, future always-initialized stack variables will work > and not throw warnings like this: > > fs/fcntl.c: In function ‘send_sigio_to_task’: > fs/fcntl.c:738:13: warning: statement will never be executed [-Wswitch-unreachable] > siginfo_t si; > ^~ > > Signed-off-by: Kees Cook Reviewed by: Edwin Zimmerman > --- > arch/x86/xen/enlighten_pv.c | 7 ++++--- > drivers/char/pcmcia/cm4000_cs.c | 2 +- > drivers/char/ppdev.c | 20 ++++++++----------- > drivers/gpu/drm/drm_edid.c | 4 ++-- > drivers/gpu/drm/i915/intel_display.c | 2 +- > drivers/gpu/drm/i915/intel_pm.c | 4 ++-- > drivers/net/ethernet/intel/e1000/e1000_main.c | 3 ++- > drivers/tty/n_tty.c | 3 +-- > drivers/usb/gadget/udc/net2280.c | 5 ++--- > fs/fcntl.c | 3 ++- > mm/shmem.c | 5 +++-- > net/core/skbuff.c | 4 ++-- > net/ipv6/ip6_gre.c | 4 ++-- > net/ipv6/ip6_tunnel.c | 4 ++-- > net/openvswitch/flow_netlink.c | 7 +++---- > security/tomoyo/common.c | 3 ++- > security/tomoyo/condition.c | 7 ++++--- > security/tomoyo/util.c | 4 ++-- > 18 files changed, 45 insertions(+), 46 deletions(-) > > diff --git a/arch/x86/xen/enlighten_pv.c b/arch/x86/xen/enlighten_pv.c > index c54a493e139a..a79d4b548a08 100644 > --- a/arch/x86/xen/enlighten_pv.c > +++ b/arch/x86/xen/enlighten_pv.c > @@ -907,14 +907,15 @@ static u64 xen_read_msr_safe(unsigned int msr, int *err) > static int xen_write_msr_safe(unsigned int msr, unsigned low, unsigned high) > { > int ret; > +#ifdef CONFIG_X86_64 > + unsigned which; > + u64 base; > +#endif > > ret = 0; > > switch (msr) { > #ifdef CONFIG_X86_64 > - unsigned which; > - u64 base; > - > case MSR_FS_BASE: which = SEGBASE_FS; goto set; > case MSR_KERNEL_GS_BASE: which = SEGBASE_GS_USER; goto set; > case MSR_GS_BASE: which = SEGBASE_GS_KERNEL; goto set; > diff --git a/drivers/char/pcmcia/cm4000_cs.c b/drivers/char/pcmcia/cm4000_cs.c > index 7a4eb86aedac..7211dc0e6f4f 100644 > --- a/drivers/char/pcmcia/cm4000_cs.c > +++ b/drivers/char/pcmcia/cm4000_cs.c > @@ -663,6 +663,7 @@ static void monitor_card(struct timer_list *t) > { > struct cm4000_dev *dev = from_timer(dev, t, timer); > unsigned int iobase = dev->p_dev->resource[0]->start; > + unsigned char flags0; > unsigned short s; > struct ptsreq ptsreq; > int i, atrc; > @@ -731,7 +732,6 @@ static void monitor_card(struct timer_list *t) > } > > switch (dev->mstate) { > - unsigned char flags0; > case M_CARDOFF: > DEBUGP(4, dev, "M_CARDOFF\n"); > flags0 = inb(REG_FLAGS0(iobase)); > diff --git a/drivers/char/ppdev.c b/drivers/char/ppdev.c > index 1ae77b41050a..d77c97e4f996 100644 > --- a/drivers/char/ppdev.c > +++ b/drivers/char/ppdev.c > @@ -359,14 +359,19 @@ static int pp_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg) > struct pp_struct *pp = file->private_data; > struct parport *port; > void __user *argp = (void __user *)arg; > + struct ieee1284_info *info; > + unsigned char reg; > + unsigned char mask; > + int mode; > + s32 time32[2]; > + s64 time64[2]; > + struct timespec64 ts; > + int ret; > > /* First handle the cases that don't take arguments. */ > switch (cmd) { > case PPCLAIM: > { > - struct ieee1284_info *info; > - int ret; > - > if (pp->flags & PP_CLAIMED) { > dev_dbg(&pp->pdev->dev, "you've already got it!\n"); > return -EINVAL; > @@ -517,15 +522,6 @@ static int pp_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg) > > port = pp->pdev->port; > switch (cmd) { > - struct ieee1284_info *info; > - unsigned char reg; > - unsigned char mask; > - int mode; > - s32 time32[2]; > - s64 time64[2]; > - struct timespec64 ts; > - int ret; > - > case PPRSTATUS: > reg = parport_read_status(port); > if (copy_to_user(argp, ®, sizeof(reg))) > diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c > index b506e3622b08..8f93956c1628 100644 > --- a/drivers/gpu/drm/drm_edid.c > +++ b/drivers/gpu/drm/drm_edid.c > @@ -3942,12 +3942,12 @@ static void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid) > } > > for_each_cea_db(cea, i, start, end) { > + int sad_count; > + > db = &cea[i]; > dbl = cea_db_payload_len(db); > > switch (cea_db_tag(db)) { > - int sad_count; > - > case AUDIO_BLOCK: > /* Audio Data Block, contains SADs */ > sad_count = min(dbl / 3, 15 - total_sad_count); > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index 3da9c0f9e948..aa1c2ebea456 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -11341,6 +11341,7 @@ static bool check_digital_port_conflicts(struct drm_atomic_state *state) > drm_for_each_connector_iter(connector, &conn_iter) { > struct drm_connector_state *connector_state; > struct intel_encoder *encoder; > + unsigned int port_mask; > > connector_state = drm_atomic_get_new_connector_state(state, connector); > if (!connector_state) > @@ -11354,7 +11355,6 @@ static bool check_digital_port_conflicts(struct drm_atomic_state *state) > WARN_ON(!connector_state->crtc); > > switch (encoder->type) { > - unsigned int port_mask; > case INTEL_OUTPUT_DDI: > if (WARN_ON(!HAS_DDI(to_i915(dev)))) > break; > diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c > index a26b4eddda25..c135fdec96b3 100644 > --- a/drivers/gpu/drm/i915/intel_pm.c > +++ b/drivers/gpu/drm/i915/intel_pm.c > @@ -478,9 +478,9 @@ static void vlv_get_fifo_size(struct intel_crtc_state *crtc_state) > struct vlv_fifo_state *fifo_state = &crtc_state->wm.vlv.fifo_state; > enum pipe pipe = crtc->pipe; > int sprite0_start, sprite1_start; > + uint32_t dsparb, dsparb2, dsparb3; > > switch (pipe) { > - uint32_t dsparb, dsparb2, dsparb3; > case PIPE_A: > dsparb = I915_READ(DSPARB); > dsparb2 = I915_READ(DSPARB2); > @@ -1944,6 +1944,7 @@ static void vlv_atomic_update_fifo(struct intel_atomic_state *state, > const struct vlv_fifo_state *fifo_state = > &crtc_state->wm.vlv.fifo_state; > int sprite0_start, sprite1_start, fifo_size; > + uint32_t dsparb, dsparb2, dsparb3; > > if (!crtc_state->fifo_changed) > return; > @@ -1969,7 +1970,6 @@ static void vlv_atomic_update_fifo(struct intel_atomic_state *state, > spin_lock(&dev_priv->uncore.lock); > > switch (crtc->pipe) { > - uint32_t dsparb, dsparb2, dsparb3; > case PIPE_A: > dsparb = I915_READ_FW(DSPARB); > dsparb2 = I915_READ_FW(DSPARB2); > diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c > index 8fe9af0e2ab7..041062736845 100644 > --- a/drivers/net/ethernet/intel/e1000/e1000_main.c > +++ b/drivers/net/ethernet/intel/e1000/e1000_main.c > @@ -3140,8 +3140,9 @@ static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb, > > hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb); > if (skb->data_len && hdr_len == len) { > + unsigned int pull_size; > + > switch (hw->mac_type) { > - unsigned int pull_size; > case e1000_82544: > /* Make sure we have room to chop off 4 bytes, > * and that the end alignment will work out to > diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c > index 5dc9686697cf..eafb39157281 100644 > --- a/drivers/tty/n_tty.c > +++ b/drivers/tty/n_tty.c > @@ -634,6 +634,7 @@ static size_t __process_echoes(struct tty_struct *tty) > while (MASK(ldata->echo_commit) != MASK(tail)) { > c = echo_buf(ldata, tail); > if (c == ECHO_OP_START) { > + unsigned int num_chars, num_bs; > unsigned char op; > int no_space_left = 0; > > @@ -652,8 +653,6 @@ static size_t __process_echoes(struct tty_struct *tty) > op = echo_buf(ldata, tail + 1); > > switch (op) { > - unsigned int num_chars, num_bs; > - > case ECHO_OP_ERASE_TAB: > if (MASK(ldata->echo_commit) == MASK(tail + 2)) > goto not_yet_stored; > diff --git a/drivers/usb/gadget/udc/net2280.c b/drivers/usb/gadget/udc/net2280.c > index e7dae5379e04..2b275a574e94 100644 > --- a/drivers/usb/gadget/udc/net2280.c > +++ b/drivers/usb/gadget/udc/net2280.c > @@ -2854,16 +2854,15 @@ static void ep_clear_seqnum(struct net2280_ep *ep) > static void handle_stat0_irqs_superspeed(struct net2280 *dev, > struct net2280_ep *ep, struct usb_ctrlrequest r) > { > + struct net2280_ep *e; > int tmp = 0; > + u16 status; > > #define w_value le16_to_cpu(r.wValue) > #define w_index le16_to_cpu(r.wIndex) > #define w_length le16_to_cpu(r.wLength) > > switch (r.bRequest) { > - struct net2280_ep *e; > - u16 status; > - > case USB_REQ_SET_CONFIGURATION: > dev->addressed_state = !w_value; > goto usb3_delegate; > diff --git a/fs/fcntl.c b/fs/fcntl.c > index 083185174c6d..0640b64ecdc2 100644 > --- a/fs/fcntl.c > +++ b/fs/fcntl.c > @@ -725,6 +725,8 @@ static void send_sigio_to_task(struct task_struct *p, > struct fown_struct *fown, > int fd, int reason, enum pid_type type) > { > + kernel_siginfo_t si; > + > /* > * F_SETSIG can change ->signum lockless in parallel, make > * sure we read it once and use the same value throughout. > @@ -735,7 +737,6 @@ static void send_sigio_to_task(struct task_struct *p, > return; > > switch (signum) { > - kernel_siginfo_t si; > default: > /* Queue a rt signal with the appropriate fd as its > value. We use SI_SIGIO as the source, not > diff --git a/mm/shmem.c b/mm/shmem.c > index 6ece1e2fe76e..0b02624dd8b2 100644 > --- a/mm/shmem.c > +++ b/mm/shmem.c > @@ -1721,6 +1721,9 @@ static int shmem_getpage_gfp(struct inode *inode, pgoff_t index, > swap_free(swap); > > } else { > + loff_t i_size; > + pgoff_t off; > + > if (vma && userfaultfd_missing(vma)) { > *fault_type = handle_userfault(vmf, VM_UFFD_MISSING); > return 0; > @@ -1734,8 +1737,6 @@ static int shmem_getpage_gfp(struct inode *inode, pgoff_t index, > if (shmem_huge == SHMEM_HUGE_FORCE) > goto alloc_huge; > switch (sbinfo->huge) { > - loff_t i_size; > - pgoff_t off; > case SHMEM_HUGE_NEVER: > goto alloc_nohuge; > case SHMEM_HUGE_WITHIN_SIZE: > diff --git a/net/core/skbuff.c b/net/core/skbuff.c > index 26d848484912..7597b3fc9d21 100644 > --- a/net/core/skbuff.c > +++ b/net/core/skbuff.c > @@ -4506,9 +4506,9 @@ static __sum16 *skb_checksum_setup_ip(struct sk_buff *skb, > typeof(IPPROTO_IP) proto, > unsigned int off) > { > - switch (proto) { > - int err; > + int err; > > + switch (proto) { > case IPPROTO_TCP: > err = skb_maybe_pull_tail(skb, off + sizeof(struct tcphdr), > off + MAX_TCP_HDR_LEN); > diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c > index b1be67ca6768..9aee1add46c0 100644 > --- a/net/ipv6/ip6_gre.c > +++ b/net/ipv6/ip6_gre.c > @@ -427,9 +427,11 @@ static int ip6gre_err(struct sk_buff *skb, struct inet6_skb_parm *opt, > u8 type, u8 code, int offset, __be32 info) > { > struct net *net = dev_net(skb->dev); > + struct ipv6_tlv_tnl_enc_lim *tel; > const struct ipv6hdr *ipv6h; > struct tnl_ptk_info tpi; > struct ip6_tnl *t; > + __u32 teli; > > if (gre_parse_header(skb, &tpi, NULL, htons(ETH_P_IPV6), > offset) < 0) > @@ -442,8 +444,6 @@ static int ip6gre_err(struct sk_buff *skb, struct inet6_skb_parm *opt, > return -ENOENT; > > switch (type) { > - struct ipv6_tlv_tnl_enc_lim *tel; > - __u32 teli; > case ICMPV6_DEST_UNREACH: > net_dbg_ratelimited("%s: Path to destination invalid or inactive!\n", > t->parms.name); > diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c > index 0c6403cf8b52..94ccc7a9037b 100644 > --- a/net/ipv6/ip6_tunnel.c > +++ b/net/ipv6/ip6_tunnel.c > @@ -478,10 +478,12 @@ ip6_tnl_err(struct sk_buff *skb, __u8 ipproto, struct inet6_skb_parm *opt, > struct net *net = dev_net(skb->dev); > u8 rel_type = ICMPV6_DEST_UNREACH; > u8 rel_code = ICMPV6_ADDR_UNREACH; > + struct ipv6_tlv_tnl_enc_lim *tel; > __u32 rel_info = 0; > struct ip6_tnl *t; > int err = -ENOENT; > int rel_msg = 0; > + __u32 mtu, teli; > u8 tproto; > __u16 len; > > @@ -501,8 +503,6 @@ ip6_tnl_err(struct sk_buff *skb, __u8 ipproto, struct inet6_skb_parm *opt, > err = 0; > > switch (*type) { > - struct ipv6_tlv_tnl_enc_lim *tel; > - __u32 mtu, teli; > case ICMPV6_DEST_UNREACH: > net_dbg_ratelimited("%s: Path to destination invalid or inactive!\n", > t->parms.name); > diff --git a/net/openvswitch/flow_netlink.c b/net/openvswitch/flow_netlink.c > index 691da853bef5..dee2f9516ae8 100644 > --- a/net/openvswitch/flow_netlink.c > +++ b/net/openvswitch/flow_netlink.c > @@ -2652,8 +2652,11 @@ static int validate_set(const struct nlattr *a, > u8 mac_proto, __be16 eth_type, bool masked, bool log) > { > const struct nlattr *ovs_key = nla_data(a); > + const struct ovs_key_ipv4 *ipv4_key; > + const struct ovs_key_ipv6 *ipv6_key; > int key_type = nla_type(ovs_key); > size_t key_len; > + int err; > > /* There can be only one key in a action */ > if (nla_total_size(nla_len(ovs_key)) != nla_len(a)) > @@ -2671,10 +2674,6 @@ static int validate_set(const struct nlattr *a, > return -EINVAL; > > switch (key_type) { > - const struct ovs_key_ipv4 *ipv4_key; > - const struct ovs_key_ipv6 *ipv6_key; > - int err; > - > case OVS_KEY_ATTR_PRIORITY: > case OVS_KEY_ATTR_SKB_MARK: > case OVS_KEY_ATTR_CT_MARK: > diff --git a/security/tomoyo/common.c b/security/tomoyo/common.c > index c598aa00d5e3..bedbd0518153 100644 > --- a/security/tomoyo/common.c > +++ b/security/tomoyo/common.c > @@ -1583,8 +1583,9 @@ static void tomoyo_read_domain(struct tomoyo_io_buffer *head) > list_for_each_cookie(head->r.domain, &tomoyo_domain_list) { > struct tomoyo_domain_info *domain = > list_entry(head->r.domain, typeof(*domain), list); > + u8 i; > + > switch (head->r.step) { > - u8 i; > case 0: > if (domain->is_deleted && > !head->r.print_this_domain_only) > diff --git a/security/tomoyo/condition.c b/security/tomoyo/condition.c > index 8d0e1b9c9c57..c10d903febe5 100644 > --- a/security/tomoyo/condition.c > +++ b/security/tomoyo/condition.c > @@ -787,10 +787,11 @@ bool tomoyo_condition(struct tomoyo_request_info *r, > /* Check string expressions. */ > if (right == TOMOYO_NAME_UNION) { > const struct tomoyo_name_union *ptr = names_p++; > + struct tomoyo_path_info *symlink; > + struct tomoyo_execve *ee; > + struct file *file; > + > switch (left) { > - struct tomoyo_path_info *symlink; > - struct tomoyo_execve *ee; > - struct file *file; > case TOMOYO_SYMLINK_TARGET: > symlink = obj ? obj->symlink_target : NULL; > if (!symlink || > diff --git a/security/tomoyo/util.c b/security/tomoyo/util.c > index badffc8271c8..8e2bb36df37b 100644 > --- a/security/tomoyo/util.c > +++ b/security/tomoyo/util.c > @@ -668,6 +668,8 @@ static bool tomoyo_file_matches_pattern2(const char *filename, > { > while (filename < filename_end && pattern < pattern_end) { > char c; > + int i, j; > + > if (*pattern != '\\') { > if (*filename++ != *pattern++) > return false; > @@ -676,8 +678,6 @@ static bool tomoyo_file_matches_pattern2(const char *filename, > c = *filename; > pattern++; > switch (*pattern) { > - int i; > - int j; > case '?': > if (c == '/') { > return false; > -- > 2.17.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [1/3] treewide: Lift switch variables out of switches From: Edwin Zimmerman Message-Id: <000501d4b3e4$83dd2290$8b9767b0$@211mainstreet.net> Date: Thu, 24 Jan 2019 07:58:32 -0500 To: 'Kees Cook' , linux-kernel@vger.kernel.org Cc: 'Ard Biesheuvel' , 'Laura Abbott' , 'Alexander Popov' , xen-devel@lists.xenproject.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-wired-lan@lists.osuosl.org, netdev@vger.kernel.org, linux-usb@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, dev@openvswitch.org, linux-kbuild@vger.kernel.org, linux-security-module@vger.kernel.org, kernel-hardening@lists.openwall.com List-ID: T24gV2VkbmVzZGF5LCBKYW51YXJ5IDIzLCAyMDE5IDY6MDQgQU0sIEtlZXMgQ29vayB3cm90ZQo+ IAo+IFZhcmlhYmxlcyBkZWNsYXJlZCBpbiBhIHN3aXRjaCBzdGF0ZW1lbnQgYmVmb3JlIGFueSBj YXNlIHN0YXRlbWVudHMKPiBjYW5ub3QgYmUgaW5pdGlhbGl6ZWQsIHNvIG1vdmUgYWxsIGluc3Rh bmNlcyBvdXQgb2YgdGhlIHN3aXRjaGVzLgo+IEFmdGVyIHRoaXMsIGZ1dHVyZSBhbHdheXMtaW5p dGlhbGl6ZWQgc3RhY2sgdmFyaWFibGVzIHdpbGwgd29yawo+IGFuZCBub3QgdGhyb3cgd2Fybmlu Z3MgbGlrZSB0aGlzOgo+IAo+IGZzL2ZjbnRsLmM6IEluIGZ1bmN0aW9uIOKAmHNlbmRfc2lnaW9f dG9fdGFza+KAmToKPiBmcy9mY250bC5jOjczODoxMzogd2FybmluZzogc3RhdGVtZW50IHdpbGwg bmV2ZXIgYmUgZXhlY3V0ZWQgWy1Xc3dpdGNoLXVucmVhY2hhYmxlXQo+ICAgIHNpZ2luZm9fdCBz aTsKPiAgICAgICAgICAgICAgXn4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBLZWVzIENvb2sgPGtlZXNj b29rQGNocm9taXVtLm9yZz4KClJldmlld2VkIGJ5OiBFZHdpbiBaaW1tZXJtYW4gPGVkd2luQDIx MW1haW5zdHJlZXQubmV0PgoKPiAtLS0KPiAgYXJjaC94ODYveGVuL2VubGlnaHRlbl9wdi5jICAg ICAgICAgICAgICAgICAgIHwgIDcgKysrKy0tLQo+ICBkcml2ZXJzL2NoYXIvcGNtY2lhL2NtNDAw MF9jcy5jICAgICAgICAgICAgICAgfCAgMiArLQo+ICBkcml2ZXJzL2NoYXIvcHBkZXYuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAyMCArKysrKysrKy0tLS0tLS0tLS0tCj4gIGRyaXZlcnMv Z3B1L2RybS9kcm1fZWRpZC5jICAgICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgICAgICAgIHwgIDIgKy0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgICAgICAgIHwgIDQgKystLQo+ICBkcml2 ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMgfCAgMyArKy0KPiAgZHJp dmVycy90dHkvbl90dHkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKy0tCj4gIGRy aXZlcnMvdXNiL2dhZGdldC91ZGMvbmV0MjI4MC5jICAgICAgICAgICAgICB8ICA1ICsrLS0tCj4g IGZzL2ZjbnRsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzICsrLQo+ ICBtbS9zaG1lbS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNSArKyst LQo+ICBuZXQvY29yZS9za2J1ZmYuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCAr Ky0tCj4gIG5ldC9pcHY2L2lwNl9ncmUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0 ICsrLS0KPiAgbmV0L2lwdjYvaXA2X3R1bm5lbC5jICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDQgKystLQo+ICBuZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmMgICAgICAgICAgICAgICAg fCAgNyArKystLS0tCj4gIHNlY3VyaXR5L3RvbW95by9jb21tb24uYyAgICAgICAgICAgICAgICAg ICAgICB8ICAzICsrLQo+ICBzZWN1cml0eS90b21veW8vY29uZGl0aW9uLmMgICAgICAgICAgICAg ICAgICAgfCAgNyArKysrLS0tCj4gIHNlY3VyaXR5L3RvbW95by91dGlsLmMgICAgICAgICAgICAg ICAgICAgICAgICB8ICA0ICsrLS0KPiAgMTggZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygr KSwgNDYgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2FyY2gveDg2L3hlbi9lbmxpZ2h0 ZW5fcHYuYyBiL2FyY2gveDg2L3hlbi9lbmxpZ2h0ZW5fcHYuYwo+IGluZGV4IGM1NGE0OTNlMTM5 YS4uYTc5ZDRiNTQ4YTA4IDEwMDY0NAo+IC0tLSBhL2FyY2gveDg2L3hlbi9lbmxpZ2h0ZW5fcHYu Ywo+ICsrKyBiL2FyY2gveDg2L3hlbi9lbmxpZ2h0ZW5fcHYuYwo+IEBAIC05MDcsMTQgKzkwNywx NSBAQCBzdGF0aWMgdTY0IHhlbl9yZWFkX21zcl9zYWZlKHVuc2lnbmVkIGludCBtc3IsIGludCAq ZXJyKQo+ICBzdGF0aWMgaW50IHhlbl93cml0ZV9tc3Jfc2FmZSh1bnNpZ25lZCBpbnQgbXNyLCB1 bnNpZ25lZCBsb3csIHVuc2lnbmVkIGhpZ2gpCj4gIHsKPiAgCWludCByZXQ7Cj4gKyNpZmRlZiBD T05GSUdfWDg2XzY0Cj4gKwl1bnNpZ25lZCB3aGljaDsKPiArCXU2NCBiYXNlOwo+ICsjZW5kaWYK PiAKPiAgCXJldCA9IDA7Cj4gCj4gIAlzd2l0Y2ggKG1zcikgewo+ICAjaWZkZWYgQ09ORklHX1g4 Nl82NAo+IC0JCXVuc2lnbmVkIHdoaWNoOwo+IC0JCXU2NCBiYXNlOwo+IC0KPiAgCWNhc2UgTVNS X0ZTX0JBU0U6CQl3aGljaCA9IFNFR0JBU0VfRlM7IGdvdG8gc2V0Owo+ICAJY2FzZSBNU1JfS0VS TkVMX0dTX0JBU0U6CXdoaWNoID0gU0VHQkFTRV9HU19VU0VSOyBnb3RvIHNldDsKPiAgCWNhc2Ug TVNSX0dTX0JBU0U6CQl3aGljaCA9IFNFR0JBU0VfR1NfS0VSTkVMOyBnb3RvIHNldDsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9jaGFyL3BjbWNpYS9jbTQwMDBfY3MuYyBiL2RyaXZlcnMvY2hhci9w Y21jaWEvY200MDAwX2NzLmMKPiBpbmRleCA3YTRlYjg2YWVkYWMuLjcyMTFkYzBlNmY0ZiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2NoYXIvcGNtY2lhL2NtNDAwMF9jcy5jCj4gKysrIGIvZHJpdmVy cy9jaGFyL3BjbWNpYS9jbTQwMDBfY3MuYwo+IEBAIC02NjMsNiArNjYzLDcgQEAgc3RhdGljIHZv aWQgbW9uaXRvcl9jYXJkKHN0cnVjdCB0aW1lcl9saXN0ICp0KQo+ICB7Cj4gIAlzdHJ1Y3QgY200 MDAwX2RldiAqZGV2ID0gZnJvbV90aW1lcihkZXYsIHQsIHRpbWVyKTsKPiAgCXVuc2lnbmVkIGlu dCBpb2Jhc2UgPSBkZXYtPnBfZGV2LT5yZXNvdXJjZVswXS0+c3RhcnQ7Cj4gKwl1bnNpZ25lZCBj aGFyIGZsYWdzMDsKPiAgCXVuc2lnbmVkIHNob3J0IHM7Cj4gIAlzdHJ1Y3QgcHRzcmVxIHB0c3Jl cTsKPiAgCWludCBpLCBhdHJjOwo+IEBAIC03MzEsNyArNzMyLDYgQEAgc3RhdGljIHZvaWQgbW9u aXRvcl9jYXJkKHN0cnVjdCB0aW1lcl9saXN0ICp0KQo+ICAJfQo+IAo+ICAJc3dpdGNoIChkZXYt Pm1zdGF0ZSkgewo+IC0JCXVuc2lnbmVkIGNoYXIgZmxhZ3MwOwo+ICAJY2FzZSBNX0NBUkRPRkY6 Cj4gIAkJREVCVUdQKDQsIGRldiwgIk1fQ0FSRE9GRlxuIik7Cj4gIAkJZmxhZ3MwID0gaW5iKFJF R19GTEFHUzAoaW9iYXNlKSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9wcGRldi5jIGIv ZHJpdmVycy9jaGFyL3BwZGV2LmMKPiBpbmRleCAxYWU3N2I0MTA1MGEuLmQ3N2M5N2U0Zjk5NiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2NoYXIvcHBkZXYuYwo+ICsrKyBiL2RyaXZlcnMvY2hhci9w cGRldi5jCj4gQEAgLTM1OSwxNCArMzU5LDE5IEBAIHN0YXRpYyBpbnQgcHBfZG9faW9jdGwoc3Ry dWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQo+ICAJ c3RydWN0IHBwX3N0cnVjdCAqcHAgPSBmaWxlLT5wcml2YXRlX2RhdGE7Cj4gIAlzdHJ1Y3QgcGFy cG9ydCAqcG9ydDsKPiAgCXZvaWQgX191c2VyICphcmdwID0gKHZvaWQgX191c2VyICopYXJnOwo+ ICsJc3RydWN0IGllZWUxMjg0X2luZm8gKmluZm87Cj4gKwl1bnNpZ25lZCBjaGFyIHJlZzsKPiAr CXVuc2lnbmVkIGNoYXIgbWFzazsKPiArCWludCBtb2RlOwo+ICsJczMyIHRpbWUzMlsyXTsKPiAr CXM2NCB0aW1lNjRbMl07Cj4gKwlzdHJ1Y3QgdGltZXNwZWM2NCB0czsKPiArCWludCByZXQ7Cj4g Cj4gIAkvKiBGaXJzdCBoYW5kbGUgdGhlIGNhc2VzIHRoYXQgZG9uJ3QgdGFrZSBhcmd1bWVudHMu ICovCj4gIAlzd2l0Y2ggKGNtZCkgewo+ICAJY2FzZSBQUENMQUlNOgo+ICAJICAgIHsKPiAtCQlz dHJ1Y3QgaWVlZTEyODRfaW5mbyAqaW5mbzsKPiAtCQlpbnQgcmV0Owo+IC0KPiAgCQlpZiAocHAt PmZsYWdzICYgUFBfQ0xBSU1FRCkgewo+ICAJCQlkZXZfZGJnKCZwcC0+cGRldi0+ZGV2LCAieW91 J3ZlIGFscmVhZHkgZ290IGl0IVxuIik7Cj4gIAkJCXJldHVybiAtRUlOVkFMOwo+IEBAIC01MTcs MTUgKzUyMiw2IEBAIHN0YXRpYyBpbnQgcHBfZG9faW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVu c2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQo+IAo+ICAJcG9ydCA9IHBwLT5wZGV2 LT5wb3J0Owo+ICAJc3dpdGNoIChjbWQpIHsKPiAtCQlzdHJ1Y3QgaWVlZTEyODRfaW5mbyAqaW5m bzsKPiAtCQl1bnNpZ25lZCBjaGFyIHJlZzsKPiAtCQl1bnNpZ25lZCBjaGFyIG1hc2s7Cj4gLQkJ aW50IG1vZGU7Cj4gLQkJczMyIHRpbWUzMlsyXTsKPiAtCQlzNjQgdGltZTY0WzJdOwo+IC0JCXN0 cnVjdCB0aW1lc3BlYzY0IHRzOwo+IC0JCWludCByZXQ7Cj4gLQo+ICAJY2FzZSBQUFJTVEFUVVM6 Cj4gIAkJcmVnID0gcGFycG9ydF9yZWFkX3N0YXR1cyhwb3J0KTsKPiAgCQlpZiAoY29weV90b191 c2VyKGFyZ3AsICZyZWcsIHNpemVvZihyZWcpKSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2RybV9lZGlkLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYwo+IGluZGV4IGI1MDZl MzYyMmIwOC4uOGY5Mzk1NmMxNjI4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f ZWRpZC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMKPiBAQCAtMzk0MiwxMiAr Mzk0MiwxMiBAQCBzdGF0aWMgdm9pZCBkcm1fZWRpZF90b19lbGQoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3Rvciwgc3RydWN0IGVkaWQgKmVkaWQpCj4gIAkJfQo+IAo+ICAJCWZvcl9lYWNo X2NlYV9kYihjZWEsIGksIHN0YXJ0LCBlbmQpIHsKPiArCQkJaW50IHNhZF9jb3VudDsKPiArCj4g IAkJCWRiID0gJmNlYVtpXTsKPiAgCQkJZGJsID0gY2VhX2RiX3BheWxvYWRfbGVuKGRiKTsKPiAK PiAgCQkJc3dpdGNoIChjZWFfZGJfdGFnKGRiKSkgewo+IC0JCQkJaW50IHNhZF9jb3VudDsKPiAt Cj4gIAkJCWNhc2UgQVVESU9fQkxPQ0s6Cj4gIAkJCQkvKiBBdWRpbyBEYXRhIEJsb2NrLCBjb250 YWlucyBTQURzICovCj4gIAkJCQlzYWRfY291bnQgPSBtaW4oZGJsIC8gMywgMTUgLSB0b3RhbF9z YWRfY291bnQpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCAzZGE5 YzBmOWU5NDguLmFhMWMyZWJlYTQ1NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMKPiBAQCAtMTEzNDEsNiArMTEzNDEsNyBAQCBzdGF0aWMgYm9vbCBjaGVja19kaWdpdGFs X3BvcnRfY29uZmxpY3RzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCWRybV9m b3JfZWFjaF9jb25uZWN0b3JfaXRlcihjb25uZWN0b3IsICZjb25uX2l0ZXIpIHsKPiAgCQlzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubmVjdG9yX3N0YXRlOwo+ICAJCXN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyOwo+ICsJCXVuc2lnbmVkIGludCBwb3J0X21hc2s7Cj4gCj4gIAkJ Y29ubmVjdG9yX3N0YXRlID0gZHJtX2F0b21pY19nZXRfbmV3X2Nvbm5lY3Rvcl9zdGF0ZShzdGF0 ZSwgY29ubmVjdG9yKTsKPiAgCQlpZiAoIWNvbm5lY3Rvcl9zdGF0ZSkKPiBAQCAtMTEzNTQsNyAr MTEzNTUsNiBAQCBzdGF0aWMgYm9vbCBjaGVja19kaWdpdGFsX3BvcnRfY29uZmxpY3RzKHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCQlXQVJOX09OKCFjb25uZWN0b3Jfc3RhdGUt PmNydGMpOwo+IAo+ICAJCXN3aXRjaCAoZW5jb2Rlci0+dHlwZSkgewo+IC0JCQl1bnNpZ25lZCBp bnQgcG9ydF9tYXNrOwo+ICAJCWNhc2UgSU5URUxfT1VUUFVUX0RESToKPiAgCQkJaWYgKFdBUk5f T04oIUhBU19EREkodG9faTkxNShkZXYpKSkpCj4gIAkJCQlicmVhazsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMKPiBpbmRleCBhMjZiNGVkZGRhMjUuLmMxMzVmZGVjOTZiMyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcG0uYwo+IEBAIC00NzgsOSArNDc4LDkgQEAgc3RhdGljIHZvaWQgdmx2X2dl dF9maWZvX3NpemUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAlzdHJ1 Y3Qgdmx2X2ZpZm9fc3RhdGUgKmZpZm9fc3RhdGUgPSAmY3J0Y19zdGF0ZS0+d20udmx2LmZpZm9f c3RhdGU7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gIAlpbnQgc3ByaXRlMF9z dGFydCwgc3ByaXRlMV9zdGFydDsKPiArCXVpbnQzMl90IGRzcGFyYiwgZHNwYXJiMiwgZHNwYXJi MzsKPiAKPiAgCXN3aXRjaCAocGlwZSkgewo+IC0JCXVpbnQzMl90IGRzcGFyYiwgZHNwYXJiMiwg ZHNwYXJiMzsKPiAgCWNhc2UgUElQRV9BOgo+ICAJCWRzcGFyYiA9IEk5MTVfUkVBRChEU1BBUkIp Owo+ICAJCWRzcGFyYjIgPSBJOTE1X1JFQUQoRFNQQVJCMik7Cj4gQEAgLTE5NDQsNiArMTk0NCw3 IEBAIHN0YXRpYyB2b2lkIHZsdl9hdG9taWNfdXBkYXRlX2ZpZm8oc3RydWN0IGludGVsX2F0b21p Y19zdGF0ZSAqc3RhdGUsCj4gIAljb25zdCBzdHJ1Y3Qgdmx2X2ZpZm9fc3RhdGUgKmZpZm9fc3Rh dGUgPQo+ICAJCSZjcnRjX3N0YXRlLT53bS52bHYuZmlmb19zdGF0ZTsKPiAgCWludCBzcHJpdGUw X3N0YXJ0LCBzcHJpdGUxX3N0YXJ0LCBmaWZvX3NpemU7Cj4gKwl1aW50MzJfdCBkc3BhcmIsIGRz cGFyYjIsIGRzcGFyYjM7Cj4gCj4gIAlpZiAoIWNydGNfc3RhdGUtPmZpZm9fY2hhbmdlZCkKPiAg CQlyZXR1cm47Cj4gQEAgLTE5NjksNyArMTk3MCw2IEBAIHN0YXRpYyB2b2lkIHZsdl9hdG9taWNf dXBkYXRlX2ZpZm8oc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gIAlzcGluX2xv Y2soJmRldl9wcml2LT51bmNvcmUubG9jayk7Cj4gCj4gIAlzd2l0Y2ggKGNydGMtPnBpcGUpIHsK PiAtCQl1aW50MzJfdCBkc3BhcmIsIGRzcGFyYjIsIGRzcGFyYjM7Cj4gIAljYXNlIFBJUEVfQToK PiAgCQlkc3BhcmIgPSBJOTE1X1JFQURfRlcoRFNQQVJCKTsKPiAgCQlkc3BhcmIyID0gSTkxNV9S RUFEX0ZXKERTUEFSQjIpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRl bC9lMTAwMC9lMTAwMF9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9l MTAwMF9tYWluLmMKPiBpbmRleCA4ZmU5YWYwZTJhYjcuLjA0MTA2MjczNjg0NSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMKPiArKysg Yi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMKPiBAQCAtMzE0 MCw4ICszMTQwLDkgQEAgc3RhdGljIG5ldGRldl90eF90IGUxMDAwX3htaXRfZnJhbWUoc3RydWN0 IHNrX2J1ZmYgKnNrYiwKPiAKPiAgCQloZHJfbGVuID0gc2tiX3RyYW5zcG9ydF9vZmZzZXQoc2ti KSArIHRjcF9oZHJsZW4oc2tiKTsKPiAgCQlpZiAoc2tiLT5kYXRhX2xlbiAmJiBoZHJfbGVuID09 IGxlbikgewo+ICsJCQl1bnNpZ25lZCBpbnQgcHVsbF9zaXplOwo+ICsKPiAgCQkJc3dpdGNoICho dy0+bWFjX3R5cGUpIHsKPiAtCQkJCXVuc2lnbmVkIGludCBwdWxsX3NpemU7Cj4gIAkJCWNhc2Ug ZTEwMDBfODI1NDQ6Cj4gIAkJCQkvKiBNYWtlIHN1cmUgd2UgaGF2ZSByb29tIHRvIGNob3Agb2Zm IDQgYnl0ZXMsCj4gIAkJCQkgKiBhbmQgdGhhdCB0aGUgZW5kIGFsaWdubWVudCB3aWxsIHdvcmsg b3V0IHRvCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L25fdHR5LmMgYi9kcml2ZXJzL3R0eS9u X3R0eS5jCj4gaW5kZXggNWRjOTY4NjY5N2NmLi5lYWZiMzkxNTcyODEgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy90dHkvbl90dHkuYwo+ICsrKyBiL2RyaXZlcnMvdHR5L25fdHR5LmMKPiBAQCAtNjM0 LDYgKzYzNCw3IEBAIHN0YXRpYyBzaXplX3QgX19wcm9jZXNzX2VjaG9lcyhzdHJ1Y3QgdHR5X3N0 cnVjdCAqdHR5KQo+ICAJd2hpbGUgKE1BU0sobGRhdGEtPmVjaG9fY29tbWl0KSAhPSBNQVNLKHRh aWwpKSB7Cj4gIAkJYyA9IGVjaG9fYnVmKGxkYXRhLCB0YWlsKTsKPiAgCQlpZiAoYyA9PSBFQ0hP X09QX1NUQVJUKSB7Cj4gKwkJCXVuc2lnbmVkIGludCBudW1fY2hhcnMsIG51bV9iczsKPiAgCQkJ dW5zaWduZWQgY2hhciBvcDsKPiAgCQkJaW50IG5vX3NwYWNlX2xlZnQgPSAwOwo+IAo+IEBAIC02 NTIsOCArNjUzLDYgQEAgc3RhdGljIHNpemVfdCBfX3Byb2Nlc3NfZWNob2VzKHN0cnVjdCB0dHlf c3RydWN0ICp0dHkpCj4gIAkJCW9wID0gZWNob19idWYobGRhdGEsIHRhaWwgKyAxKTsKPiAKPiAg CQkJc3dpdGNoIChvcCkgewo+IC0JCQkJdW5zaWduZWQgaW50IG51bV9jaGFycywgbnVtX2JzOwo+ IC0KPiAgCQkJY2FzZSBFQ0hPX09QX0VSQVNFX1RBQjoKPiAgCQkJCWlmIChNQVNLKGxkYXRhLT5l Y2hvX2NvbW1pdCkgPT0gTUFTSyh0YWlsICsgMikpCj4gIAkJCQkJZ290byBub3RfeWV0X3N0b3Jl ZDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9uZXQyMjgwLmMgYi9kcml2 ZXJzL3VzYi9nYWRnZXQvdWRjL25ldDIyODAuYwo+IGluZGV4IGU3ZGFlNTM3OWUwNC4uMmIyNzVh NTc0ZTk0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC91ZGMvbmV0MjI4MC5jCj4g KysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9uZXQyMjgwLmMKPiBAQCAtMjg1NCwxNiArMjg1 NCwxNSBAQCBzdGF0aWMgdm9pZCBlcF9jbGVhcl9zZXFudW0oc3RydWN0IG5ldDIyODBfZXAgKmVw KQo+ICBzdGF0aWMgdm9pZCBoYW5kbGVfc3RhdDBfaXJxc19zdXBlcnNwZWVkKHN0cnVjdCBuZXQy MjgwICpkZXYsCj4gIAkJc3RydWN0IG5ldDIyODBfZXAgKmVwLCBzdHJ1Y3QgdXNiX2N0cmxyZXF1 ZXN0IHIpCj4gIHsKPiArCXN0cnVjdCBuZXQyMjgwX2VwICplOwo+ICAJaW50IHRtcCA9IDA7Cj4g Kwl1MTYgc3RhdHVzOwo+IAo+ICAjZGVmaW5lCXdfdmFsdWUJCWxlMTZfdG9fY3B1KHIud1ZhbHVl KQo+ICAjZGVmaW5lCXdfaW5kZXgJCWxlMTZfdG9fY3B1KHIud0luZGV4KQo+ICAjZGVmaW5lCXdf bGVuZ3RoCWxlMTZfdG9fY3B1KHIud0xlbmd0aCkKPiAKPiAgCXN3aXRjaCAoci5iUmVxdWVzdCkg ewo+IC0JCXN0cnVjdCBuZXQyMjgwX2VwICplOwo+IC0JCXUxNiBzdGF0dXM7Cj4gLQo+ICAJY2Fz ZSBVU0JfUkVRX1NFVF9DT05GSUdVUkFUSU9OOgo+ICAJCWRldi0+YWRkcmVzc2VkX3N0YXRlID0g IXdfdmFsdWU7Cj4gIAkJZ290byB1c2IzX2RlbGVnYXRlOwo+IGRpZmYgLS1naXQgYS9mcy9mY250 bC5jIGIvZnMvZmNudGwuYwo+IGluZGV4IDA4MzE4NTE3NGM2ZC4uMDY0MGI2NGVjZGMyIDEwMDY0 NAo+IC0tLSBhL2ZzL2ZjbnRsLmMKPiArKysgYi9mcy9mY250bC5jCj4gQEAgLTcyNSw2ICs3MjUs OCBAQCBzdGF0aWMgdm9pZCBzZW5kX3NpZ2lvX3RvX3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICpw LAo+ICAJCQkgICAgICAgc3RydWN0IGZvd25fc3RydWN0ICpmb3duLAo+ICAJCQkgICAgICAgaW50 IGZkLCBpbnQgcmVhc29uLCBlbnVtIHBpZF90eXBlIHR5cGUpCj4gIHsKPiArCWtlcm5lbF9zaWdp bmZvX3Qgc2k7Cj4gKwo+ICAJLyoKPiAgCSAqIEZfU0VUU0lHIGNhbiBjaGFuZ2UgLT5zaWdudW0g bG9ja2xlc3MgaW4gcGFyYWxsZWwsIG1ha2UKPiAgCSAqIHN1cmUgd2UgcmVhZCBpdCBvbmNlIGFu ZCB1c2UgdGhlIHNhbWUgdmFsdWUgdGhyb3VnaG91dC4KPiBAQCAtNzM1LDcgKzczNyw2IEBAIHN0 YXRpYyB2b2lkIHNlbmRfc2lnaW9fdG9fdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsCj4gIAkJ cmV0dXJuOwo+IAo+ICAJc3dpdGNoIChzaWdudW0pIHsKPiAtCQlrZXJuZWxfc2lnaW5mb190IHNp Owo+ICAJCWRlZmF1bHQ6Cj4gIAkJCS8qIFF1ZXVlIGEgcnQgc2lnbmFsIHdpdGggdGhlIGFwcHJv cHJpYXRlIGZkIGFzIGl0cwo+ICAJCQkgICB2YWx1ZS4gIFdlIHVzZSBTSV9TSUdJTyBhcyB0aGUg c291cmNlLCBub3QKPiBkaWZmIC0tZ2l0IGEvbW0vc2htZW0uYyBiL21tL3NobWVtLmMKPiBpbmRl eCA2ZWNlMWUyZmU3NmUuLjBiMDI2MjRkZDhiMiAxMDA2NDQKPiAtLS0gYS9tbS9zaG1lbS5jCj4g KysrIGIvbW0vc2htZW0uYwo+IEBAIC0xNzIxLDYgKzE3MjEsOSBAQCBzdGF0aWMgaW50IHNobWVt X2dldHBhZ2VfZ2ZwKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHBnb2ZmX3QgaW5kZXgsCj4gIAkJc3dh cF9mcmVlKHN3YXApOwo+IAo+ICAJfSBlbHNlIHsKPiArCQlsb2ZmX3QgaV9zaXplOwo+ICsJCXBn b2ZmX3Qgb2ZmOwo+ICsKPiAgCQlpZiAodm1hICYmIHVzZXJmYXVsdGZkX21pc3Npbmcodm1hKSkg ewo+ICAJCQkqZmF1bHRfdHlwZSA9IGhhbmRsZV91c2VyZmF1bHQodm1mLCBWTV9VRkZEX01JU1NJ TkcpOwo+ICAJCQlyZXR1cm4gMDsKPiBAQCAtMTczNCw4ICsxNzM3LDYgQEAgc3RhdGljIGludCBz aG1lbV9nZXRwYWdlX2dmcChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBwZ29mZl90IGluZGV4LAo+ICAJ CWlmIChzaG1lbV9odWdlID09IFNITUVNX0hVR0VfRk9SQ0UpCj4gIAkJCWdvdG8gYWxsb2NfaHVn ZTsKPiAgCQlzd2l0Y2ggKHNiaW5mby0+aHVnZSkgewo+IC0JCQlsb2ZmX3QgaV9zaXplOwo+IC0J CQlwZ29mZl90IG9mZjsKPiAgCQljYXNlIFNITUVNX0hVR0VfTkVWRVI6Cj4gIAkJCWdvdG8gYWxs b2Nfbm9odWdlOwo+ICAJCWNhc2UgU0hNRU1fSFVHRV9XSVRISU5fU0laRToKPiBkaWZmIC0tZ2l0 IGEvbmV0L2NvcmUvc2tidWZmLmMgYi9uZXQvY29yZS9za2J1ZmYuYwo+IGluZGV4IDI2ZDg0ODQ4 NDkxMi4uNzU5N2IzZmM5ZDIxIDEwMDY0NAo+IC0tLSBhL25ldC9jb3JlL3NrYnVmZi5jCj4gKysr IGIvbmV0L2NvcmUvc2tidWZmLmMKPiBAQCAtNDUwNiw5ICs0NTA2LDkgQEAgc3RhdGljIF9fc3Vt MTYgKnNrYl9jaGVja3N1bV9zZXR1cF9pcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAo+ICAJCQkJICAg ICAgdHlwZW9mKElQUFJPVE9fSVApIHByb3RvLAo+ICAJCQkJICAgICAgdW5zaWduZWQgaW50IG9m ZikKPiAgewo+IC0Jc3dpdGNoIChwcm90bykgewo+IC0JCWludCBlcnI7Cj4gKwlpbnQgZXJyOwo+ IAo+ICsJc3dpdGNoIChwcm90bykgewo+ICAJY2FzZSBJUFBST1RPX1RDUDoKPiAgCQllcnIgPSBz a2JfbWF5YmVfcHVsbF90YWlsKHNrYiwgb2ZmICsgc2l6ZW9mKHN0cnVjdCB0Y3BoZHIpLAo+ICAJ CQkJCSAgb2ZmICsgTUFYX1RDUF9IRFJfTEVOKTsKPiBkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2 X2dyZS5jIGIvbmV0L2lwdjYvaXA2X2dyZS5jCj4gaW5kZXggYjFiZTY3Y2E2NzY4Li45YWVlMWFk ZDQ2YzAgMTAwNjQ0Cj4gLS0tIGEvbmV0L2lwdjYvaXA2X2dyZS5jCj4gKysrIGIvbmV0L2lwdjYv aXA2X2dyZS5jCj4gQEAgLTQyNyw5ICs0MjcsMTEgQEAgc3RhdGljIGludCBpcDZncmVfZXJyKHN0 cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpbmV0Nl9za2JfcGFybSAqb3B0LAo+ICAJCSAgICAg ICB1OCB0eXBlLCB1OCBjb2RlLCBpbnQgb2Zmc2V0LCBfX2JlMzIgaW5mbykKPiAgewo+ICAJc3Ry dWN0IG5ldCAqbmV0ID0gZGV2X25ldChza2ItPmRldik7Cj4gKwlzdHJ1Y3QgaXB2Nl90bHZfdG5s X2VuY19saW0gKnRlbDsKPiAgCWNvbnN0IHN0cnVjdCBpcHY2aGRyICppcHY2aDsKPiAgCXN0cnVj dCB0bmxfcHRrX2luZm8gdHBpOwo+ICAJc3RydWN0IGlwNl90bmwgKnQ7Cj4gKwlfX3UzMiB0ZWxp Owo+IAo+ICAJaWYgKGdyZV9wYXJzZV9oZWFkZXIoc2tiLCAmdHBpLCBOVUxMLCBodG9ucyhFVEhf UF9JUFY2KSwKPiAgCQkJICAgICBvZmZzZXQpIDwgMCkKPiBAQCAtNDQyLDggKzQ0NCw2IEBAIHN0 YXRpYyBpbnQgaXA2Z3JlX2VycihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW5ldDZfc2ti X3Bhcm0gKm9wdCwKPiAgCQlyZXR1cm4gLUVOT0VOVDsKPiAKPiAgCXN3aXRjaCAodHlwZSkgewo+ IC0JCXN0cnVjdCBpcHY2X3Rsdl90bmxfZW5jX2xpbSAqdGVsOwo+IC0JCV9fdTMyIHRlbGk7Cj4g IAljYXNlIElDTVBWNl9ERVNUX1VOUkVBQ0g6Cj4gIAkJbmV0X2RiZ19yYXRlbGltaXRlZCgiJXM6 IFBhdGggdG8gZGVzdGluYXRpb24gaW52YWxpZCBvciBpbmFjdGl2ZSFcbiIsCj4gIAkJCQkgICAg dC0+cGFybXMubmFtZSk7Cj4gZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl90dW5uZWwuYyBiL25l dC9pcHY2L2lwNl90dW5uZWwuYwo+IGluZGV4IDBjNjQwM2NmOGI1Mi4uOTRjY2M3YTkwMzdiIDEw MDY0NAo+IC0tLSBhL25ldC9pcHY2L2lwNl90dW5uZWwuYwo+ICsrKyBiL25ldC9pcHY2L2lwNl90 dW5uZWwuYwo+IEBAIC00NzgsMTAgKzQ3OCwxMiBAQCBpcDZfdG5sX2VycihzdHJ1Y3Qgc2tfYnVm ZiAqc2tiLCBfX3U4IGlwcHJvdG8sIHN0cnVjdCBpbmV0Nl9za2JfcGFybSAqb3B0LAo+ICAJc3Ry dWN0IG5ldCAqbmV0ID0gZGV2X25ldChza2ItPmRldik7Cj4gIAl1OCByZWxfdHlwZSA9IElDTVBW Nl9ERVNUX1VOUkVBQ0g7Cj4gIAl1OCByZWxfY29kZSA9IElDTVBWNl9BRERSX1VOUkVBQ0g7Cj4g KwlzdHJ1Y3QgaXB2Nl90bHZfdG5sX2VuY19saW0gKnRlbDsKPiAgCV9fdTMyIHJlbF9pbmZvID0g MDsKPiAgCXN0cnVjdCBpcDZfdG5sICp0Owo+ICAJaW50IGVyciA9IC1FTk9FTlQ7Cj4gIAlpbnQg cmVsX21zZyA9IDA7Cj4gKwlfX3UzMiBtdHUsIHRlbGk7Cj4gIAl1OCB0cHJvdG87Cj4gIAlfX3Ux NiBsZW47Cj4gCj4gQEAgLTUwMSw4ICs1MDMsNiBAQCBpcDZfdG5sX2VycihzdHJ1Y3Qgc2tfYnVm ZiAqc2tiLCBfX3U4IGlwcHJvdG8sIHN0cnVjdCBpbmV0Nl9za2JfcGFybSAqb3B0LAo+ICAJZXJy ID0gMDsKPiAKPiAgCXN3aXRjaCAoKnR5cGUpIHsKPiAtCQlzdHJ1Y3QgaXB2Nl90bHZfdG5sX2Vu Y19saW0gKnRlbDsKPiAtCQlfX3UzMiBtdHUsIHRlbGk7Cj4gIAljYXNlIElDTVBWNl9ERVNUX1VO UkVBQ0g6Cj4gIAkJbmV0X2RiZ19yYXRlbGltaXRlZCgiJXM6IFBhdGggdG8gZGVzdGluYXRpb24g aW52YWxpZCBvciBpbmFjdGl2ZSFcbiIsCj4gIAkJCQkgICAgdC0+cGFybXMubmFtZSk7Cj4gZGlm ZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYyBiL25ldC9vcGVudnN3aXRj aC9mbG93X25ldGxpbmsuYwo+IGluZGV4IDY5MWRhODUzYmVmNS4uZGVlMmY5NTE2YWU4IDEwMDY0 NAo+IC0tLSBhL25ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYwo+ICsrKyBiL25ldC9vcGVu dnN3aXRjaC9mbG93X25ldGxpbmsuYwo+IEBAIC0yNjUyLDggKzI2NTIsMTEgQEAgc3RhdGljIGlu dCB2YWxpZGF0ZV9zZXQoY29uc3Qgc3RydWN0IG5sYXR0ciAqYSwKPiAgCQkJdTggbWFjX3Byb3Rv LCBfX2JlMTYgZXRoX3R5cGUsIGJvb2wgbWFza2VkLCBib29sIGxvZykKPiAgewo+ICAJY29uc3Qg c3RydWN0IG5sYXR0ciAqb3ZzX2tleSA9IG5sYV9kYXRhKGEpOwo+ICsJY29uc3Qgc3RydWN0IG92 c19rZXlfaXB2NCAqaXB2NF9rZXk7Cj4gKwljb25zdCBzdHJ1Y3Qgb3ZzX2tleV9pcHY2ICppcHY2 X2tleTsKPiAgCWludCBrZXlfdHlwZSA9IG5sYV90eXBlKG92c19rZXkpOwo+ICAJc2l6ZV90IGtl eV9sZW47Cj4gKwlpbnQgZXJyOwo+IAo+ICAJLyogVGhlcmUgY2FuIGJlIG9ubHkgb25lIGtleSBp biBhIGFjdGlvbiAqLwo+ICAJaWYgKG5sYV90b3RhbF9zaXplKG5sYV9sZW4ob3ZzX2tleSkpICE9 IG5sYV9sZW4oYSkpCj4gQEAgLTI2NzEsMTAgKzI2NzQsNiBAQCBzdGF0aWMgaW50IHZhbGlkYXRl X3NldChjb25zdCBzdHJ1Y3QgbmxhdHRyICphLAo+ICAJCXJldHVybiAtRUlOVkFMOwo+IAo+ICAJ c3dpdGNoIChrZXlfdHlwZSkgewo+IC0JY29uc3Qgc3RydWN0IG92c19rZXlfaXB2NCAqaXB2NF9r ZXk7Cj4gLQljb25zdCBzdHJ1Y3Qgb3ZzX2tleV9pcHY2ICppcHY2X2tleTsKPiAtCWludCBlcnI7 Cj4gLQo+ICAJY2FzZSBPVlNfS0VZX0FUVFJfUFJJT1JJVFk6Cj4gIAljYXNlIE9WU19LRVlfQVRU Ul9TS0JfTUFSSzoKPiAgCWNhc2UgT1ZTX0tFWV9BVFRSX0NUX01BUks6Cj4gZGlmZiAtLWdpdCBh L3NlY3VyaXR5L3RvbW95by9jb21tb24uYyBiL3NlY3VyaXR5L3RvbW95by9jb21tb24uYwo+IGlu ZGV4IGM1OThhYTAwZDVlMy4uYmVkYmQwNTE4MTUzIDEwMDY0NAo+IC0tLSBhL3NlY3VyaXR5L3Rv bW95by9jb21tb24uYwo+ICsrKyBiL3NlY3VyaXR5L3RvbW95by9jb21tb24uYwo+IEBAIC0xNTgz LDggKzE1ODMsOSBAQCBzdGF0aWMgdm9pZCB0b21veW9fcmVhZF9kb21haW4oc3RydWN0IHRvbW95 b19pb19idWZmZXIgKmhlYWQpCj4gIAlsaXN0X2Zvcl9lYWNoX2Nvb2tpZShoZWFkLT5yLmRvbWFp biwgJnRvbW95b19kb21haW5fbGlzdCkgewo+ICAJCXN0cnVjdCB0b21veW9fZG9tYWluX2luZm8g KmRvbWFpbiA9Cj4gIAkJCWxpc3RfZW50cnkoaGVhZC0+ci5kb21haW4sIHR5cGVvZigqZG9tYWlu KSwgbGlzdCk7Cj4gKwkJdTggaTsKPiArCj4gIAkJc3dpdGNoIChoZWFkLT5yLnN0ZXApIHsKPiAt CQkJdTggaTsKPiAgCQljYXNlIDA6Cj4gIAkJCWlmIChkb21haW4tPmlzX2RlbGV0ZWQgJiYKPiAg CQkJICAgICFoZWFkLT5yLnByaW50X3RoaXNfZG9tYWluX29ubHkpCj4gZGlmZiAtLWdpdCBhL3Nl Y3VyaXR5L3RvbW95by9jb25kaXRpb24uYyBiL3NlY3VyaXR5L3RvbW95by9jb25kaXRpb24uYwo+ IGluZGV4IDhkMGUxYjljOWM1Ny4uYzEwZDkwM2ZlYmU1IDEwMDY0NAo+IC0tLSBhL3NlY3VyaXR5 L3RvbW95by9jb25kaXRpb24uYwo+ICsrKyBiL3NlY3VyaXR5L3RvbW95by9jb25kaXRpb24uYwo+ IEBAIC03ODcsMTAgKzc4NywxMSBAQCBib29sIHRvbW95b19jb25kaXRpb24oc3RydWN0IHRvbW95 b19yZXF1ZXN0X2luZm8gKnIsCj4gIAkJLyogQ2hlY2sgc3RyaW5nIGV4cHJlc3Npb25zLiAqLwo+ ICAJCWlmIChyaWdodCA9PSBUT01PWU9fTkFNRV9VTklPTikgewo+ICAJCQljb25zdCBzdHJ1Y3Qg dG9tb3lvX25hbWVfdW5pb24gKnB0ciA9IG5hbWVzX3ArKzsKPiArCQkJc3RydWN0IHRvbW95b19w YXRoX2luZm8gKnN5bWxpbms7Cj4gKwkJCXN0cnVjdCB0b21veW9fZXhlY3ZlICplZTsKPiArCQkJ c3RydWN0IGZpbGUgKmZpbGU7Cj4gKwo+ICAJCQlzd2l0Y2ggKGxlZnQpIHsKPiAtCQkJCXN0cnVj dCB0b21veW9fcGF0aF9pbmZvICpzeW1saW5rOwo+IC0JCQkJc3RydWN0IHRvbW95b19leGVjdmUg KmVlOwo+IC0JCQkJc3RydWN0IGZpbGUgKmZpbGU7Cj4gIAkJCWNhc2UgVE9NT1lPX1NZTUxJTktf VEFSR0VUOgo+ICAJCQkJc3ltbGluayA9IG9iaiA/IG9iai0+c3ltbGlua190YXJnZXQgOiBOVUxM Owo+ICAJCQkJaWYgKCFzeW1saW5rIHx8Cj4gZGlmZiAtLWdpdCBhL3NlY3VyaXR5L3RvbW95by91 dGlsLmMgYi9zZWN1cml0eS90b21veW8vdXRpbC5jCj4gaW5kZXggYmFkZmZjODI3MWM4Li44ZTJi YjM2ZGYzN2IgMTAwNjQ0Cj4gLS0tIGEvc2VjdXJpdHkvdG9tb3lvL3V0aWwuYwo+ICsrKyBiL3Nl Y3VyaXR5L3RvbW95by91dGlsLmMKPiBAQCAtNjY4LDYgKzY2OCw4IEBAIHN0YXRpYyBib29sIHRv bW95b19maWxlX21hdGNoZXNfcGF0dGVybjIoY29uc3QgY2hhciAqZmlsZW5hbWUsCj4gIHsKPiAg CXdoaWxlIChmaWxlbmFtZSA8IGZpbGVuYW1lX2VuZCAmJiBwYXR0ZXJuIDwgcGF0dGVybl9lbmQp IHsKPiAgCQljaGFyIGM7Cj4gKwkJaW50IGksIGo7Cj4gKwo+ICAJCWlmICgqcGF0dGVybiAhPSAn XFwnKSB7Cj4gIAkJCWlmICgqZmlsZW5hbWUrKyAhPSAqcGF0dGVybisrKQo+ICAJCQkJcmV0dXJu IGZhbHNlOwo+IEBAIC02NzYsOCArNjc4LDYgQEAgc3RhdGljIGJvb2wgdG9tb3lvX2ZpbGVfbWF0 Y2hlc19wYXR0ZXJuMihjb25zdCBjaGFyICpmaWxlbmFtZSwKPiAgCQljID0gKmZpbGVuYW1lOwo+ ICAJCXBhdHRlcm4rKzsKPiAgCQlzd2l0Y2ggKCpwYXR0ZXJuKSB7Cj4gLQkJCWludCBpOwo+IC0J CQlpbnQgajsKPiAgCQljYXNlICc/JzoKPiAgCQkJaWYgKGMgPT0gJy8nKSB7Cj4gIAkJCQlyZXR1 cm4gZmFsc2U7Cj4gLS0KPiAyLjE3LjEK From mboxrd@z Thu Jan 1 00:00:00 1970 From: Edwin Zimmerman Date: Thu, 24 Jan 2019 07:58:32 -0500 Subject: [Intel-wired-lan] [PATCH 1/3] treewide: Lift switch variables out of switches In-Reply-To: <20190123110349.35882-2-keescook@chromium.org> References: <20190123110349.35882-1-keescook@chromium.org> <20190123110349.35882-2-keescook@chromium.org> Message-ID: <000501d4b3e4$83dd2290$8b9767b0$@211mainstreet.net> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: intel-wired-lan@osuosl.org List-ID: On Wednesday, January 23, 2019 6:04 AM, Kees Cook wrote > > Variables declared in a switch statement before any case statements > cannot be initialized, so move all instances out of the switches. > After this, future always-initialized stack variables will work > and not throw warnings like this: > > fs/fcntl.c: In function ?send_sigio_to_task?: > fs/fcntl.c:738:13: warning: statement will never be executed [-Wswitch-unreachable] > siginfo_t si; > ^~ > > Signed-off-by: Kees Cook Reviewed by: Edwin Zimmerman > --- > arch/x86/xen/enlighten_pv.c | 7 ++++--- > drivers/char/pcmcia/cm4000_cs.c | 2 +- > drivers/char/ppdev.c | 20 ++++++++----------- > drivers/gpu/drm/drm_edid.c | 4 ++-- > drivers/gpu/drm/i915/intel_display.c | 2 +- > drivers/gpu/drm/i915/intel_pm.c | 4 ++-- > drivers/net/ethernet/intel/e1000/e1000_main.c | 3 ++- > drivers/tty/n_tty.c | 3 +-- > drivers/usb/gadget/udc/net2280.c | 5 ++--- > fs/fcntl.c | 3 ++- > mm/shmem.c | 5 +++-- > net/core/skbuff.c | 4 ++-- > net/ipv6/ip6_gre.c | 4 ++-- > net/ipv6/ip6_tunnel.c | 4 ++-- > net/openvswitch/flow_netlink.c | 7 +++---- > security/tomoyo/common.c | 3 ++- > security/tomoyo/condition.c | 7 ++++--- > security/tomoyo/util.c | 4 ++-- > 18 files changed, 45 insertions(+), 46 deletions(-) > > diff --git a/arch/x86/xen/enlighten_pv.c b/arch/x86/xen/enlighten_pv.c > index c54a493e139a..a79d4b548a08 100644 > --- a/arch/x86/xen/enlighten_pv.c > +++ b/arch/x86/xen/enlighten_pv.c > @@ -907,14 +907,15 @@ static u64 xen_read_msr_safe(unsigned int msr, int *err) > static int xen_write_msr_safe(unsigned int msr, unsigned low, unsigned high) > { > int ret; > +#ifdef CONFIG_X86_64 > + unsigned which; > + u64 base; > +#endif > > ret = 0; > > switch (msr) { > #ifdef CONFIG_X86_64 > - unsigned which; > - u64 base; > - > case MSR_FS_BASE: which = SEGBASE_FS; goto set; > case MSR_KERNEL_GS_BASE: which = SEGBASE_GS_USER; goto set; > case MSR_GS_BASE: which = SEGBASE_GS_KERNEL; goto set; > diff --git a/drivers/char/pcmcia/cm4000_cs.c b/drivers/char/pcmcia/cm4000_cs.c > index 7a4eb86aedac..7211dc0e6f4f 100644 > --- a/drivers/char/pcmcia/cm4000_cs.c > +++ b/drivers/char/pcmcia/cm4000_cs.c > @@ -663,6 +663,7 @@ static void monitor_card(struct timer_list *t) > { > struct cm4000_dev *dev = from_timer(dev, t, timer); > unsigned int iobase = dev->p_dev->resource[0]->start; > + unsigned char flags0; > unsigned short s; > struct ptsreq ptsreq; > int i, atrc; > @@ -731,7 +732,6 @@ static void monitor_card(struct timer_list *t) > } > > switch (dev->mstate) { > - unsigned char flags0; > case M_CARDOFF: > DEBUGP(4, dev, "M_CARDOFF\n"); > flags0 = inb(REG_FLAGS0(iobase)); > diff --git a/drivers/char/ppdev.c b/drivers/char/ppdev.c > index 1ae77b41050a..d77c97e4f996 100644 > --- a/drivers/char/ppdev.c > +++ b/drivers/char/ppdev.c > @@ -359,14 +359,19 @@ static int pp_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg) > struct pp_struct *pp = file->private_data; > struct parport *port; > void __user *argp = (void __user *)arg; > + struct ieee1284_info *info; > + unsigned char reg; > + unsigned char mask; > + int mode; > + s32 time32[2]; > + s64 time64[2]; > + struct timespec64 ts; > + int ret; > > /* First handle the cases that don't take arguments. */ > switch (cmd) { > case PPCLAIM: > { > - struct ieee1284_info *info; > - int ret; > - > if (pp->flags & PP_CLAIMED) { > dev_dbg(&pp->pdev->dev, "you've already got it!\n"); > return -EINVAL; > @@ -517,15 +522,6 @@ static int pp_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg) > > port = pp->pdev->port; > switch (cmd) { > - struct ieee1284_info *info; > - unsigned char reg; > - unsigned char mask; > - int mode; > - s32 time32[2]; > - s64 time64[2]; > - struct timespec64 ts; > - int ret; > - > case PPRSTATUS: > reg = parport_read_status(port); > if (copy_to_user(argp, ®, sizeof(reg))) > diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c > index b506e3622b08..8f93956c1628 100644 > --- a/drivers/gpu/drm/drm_edid.c > +++ b/drivers/gpu/drm/drm_edid.c > @@ -3942,12 +3942,12 @@ static void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid) > } > > for_each_cea_db(cea, i, start, end) { > + int sad_count; > + > db = &cea[i]; > dbl = cea_db_payload_len(db); > > switch (cea_db_tag(db)) { > - int sad_count; > - > case AUDIO_BLOCK: > /* Audio Data Block, contains SADs */ > sad_count = min(dbl / 3, 15 - total_sad_count); > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index 3da9c0f9e948..aa1c2ebea456 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -11341,6 +11341,7 @@ static bool check_digital_port_conflicts(struct drm_atomic_state *state) > drm_for_each_connector_iter(connector, &conn_iter) { > struct drm_connector_state *connector_state; > struct intel_encoder *encoder; > + unsigned int port_mask; > > connector_state = drm_atomic_get_new_connector_state(state, connector); > if (!connector_state) > @@ -11354,7 +11355,6 @@ static bool check_digital_port_conflicts(struct drm_atomic_state *state) > WARN_ON(!connector_state->crtc); > > switch (encoder->type) { > - unsigned int port_mask; > case INTEL_OUTPUT_DDI: > if (WARN_ON(!HAS_DDI(to_i915(dev)))) > break; > diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c > index a26b4eddda25..c135fdec96b3 100644 > --- a/drivers/gpu/drm/i915/intel_pm.c > +++ b/drivers/gpu/drm/i915/intel_pm.c > @@ -478,9 +478,9 @@ static void vlv_get_fifo_size(struct intel_crtc_state *crtc_state) > struct vlv_fifo_state *fifo_state = &crtc_state->wm.vlv.fifo_state; > enum pipe pipe = crtc->pipe; > int sprite0_start, sprite1_start; > + uint32_t dsparb, dsparb2, dsparb3; > > switch (pipe) { > - uint32_t dsparb, dsparb2, dsparb3; > case PIPE_A: > dsparb = I915_READ(DSPARB); > dsparb2 = I915_READ(DSPARB2); > @@ -1944,6 +1944,7 @@ static void vlv_atomic_update_fifo(struct intel_atomic_state *state, > const struct vlv_fifo_state *fifo_state = > &crtc_state->wm.vlv.fifo_state; > int sprite0_start, sprite1_start, fifo_size; > + uint32_t dsparb, dsparb2, dsparb3; > > if (!crtc_state->fifo_changed) > return; > @@ -1969,7 +1970,6 @@ static void vlv_atomic_update_fifo(struct intel_atomic_state *state, > spin_lock(&dev_priv->uncore.lock); > > switch (crtc->pipe) { > - uint32_t dsparb, dsparb2, dsparb3; > case PIPE_A: > dsparb = I915_READ_FW(DSPARB); > dsparb2 = I915_READ_FW(DSPARB2); > diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c > index 8fe9af0e2ab7..041062736845 100644 > --- a/drivers/net/ethernet/intel/e1000/e1000_main.c > +++ b/drivers/net/ethernet/intel/e1000/e1000_main.c > @@ -3140,8 +3140,9 @@ static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb, > > hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb); > if (skb->data_len && hdr_len == len) { > + unsigned int pull_size; > + > switch (hw->mac_type) { > - unsigned int pull_size; > case e1000_82544: > /* Make sure we have room to chop off 4 bytes, > * and that the end alignment will work out to > diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c > index 5dc9686697cf..eafb39157281 100644 > --- a/drivers/tty/n_tty.c > +++ b/drivers/tty/n_tty.c > @@ -634,6 +634,7 @@ static size_t __process_echoes(struct tty_struct *tty) > while (MASK(ldata->echo_commit) != MASK(tail)) { > c = echo_buf(ldata, tail); > if (c == ECHO_OP_START) { > + unsigned int num_chars, num_bs; > unsigned char op; > int no_space_left = 0; > > @@ -652,8 +653,6 @@ static size_t __process_echoes(struct tty_struct *tty) > op = echo_buf(ldata, tail + 1); > > switch (op) { > - unsigned int num_chars, num_bs; > - > case ECHO_OP_ERASE_TAB: > if (MASK(ldata->echo_commit) == MASK(tail + 2)) > goto not_yet_stored; > diff --git a/drivers/usb/gadget/udc/net2280.c b/drivers/usb/gadget/udc/net2280.c > index e7dae5379e04..2b275a574e94 100644 > --- a/drivers/usb/gadget/udc/net2280.c > +++ b/drivers/usb/gadget/udc/net2280.c > @@ -2854,16 +2854,15 @@ static void ep_clear_seqnum(struct net2280_ep *ep) > static void handle_stat0_irqs_superspeed(struct net2280 *dev, > struct net2280_ep *ep, struct usb_ctrlrequest r) > { > + struct net2280_ep *e; > int tmp = 0; > + u16 status; > > #define w_value le16_to_cpu(r.wValue) > #define w_index le16_to_cpu(r.wIndex) > #define w_length le16_to_cpu(r.wLength) > > switch (r.bRequest) { > - struct net2280_ep *e; > - u16 status; > - > case USB_REQ_SET_CONFIGURATION: > dev->addressed_state = !w_value; > goto usb3_delegate; > diff --git a/fs/fcntl.c b/fs/fcntl.c > index 083185174c6d..0640b64ecdc2 100644 > --- a/fs/fcntl.c > +++ b/fs/fcntl.c > @@ -725,6 +725,8 @@ static void send_sigio_to_task(struct task_struct *p, > struct fown_struct *fown, > int fd, int reason, enum pid_type type) > { > + kernel_siginfo_t si; > + > /* > * F_SETSIG can change ->signum lockless in parallel, make > * sure we read it once and use the same value throughout. > @@ -735,7 +737,6 @@ static void send_sigio_to_task(struct task_struct *p, > return; > > switch (signum) { > - kernel_siginfo_t si; > default: > /* Queue a rt signal with the appropriate fd as its > value. We use SI_SIGIO as the source, not > diff --git a/mm/shmem.c b/mm/shmem.c > index 6ece1e2fe76e..0b02624dd8b2 100644 > --- a/mm/shmem.c > +++ b/mm/shmem.c > @@ -1721,6 +1721,9 @@ static int shmem_getpage_gfp(struct inode *inode, pgoff_t index, > swap_free(swap); > > } else { > + loff_t i_size; > + pgoff_t off; > + > if (vma && userfaultfd_missing(vma)) { > *fault_type = handle_userfault(vmf, VM_UFFD_MISSING); > return 0; > @@ -1734,8 +1737,6 @@ static int shmem_getpage_gfp(struct inode *inode, pgoff_t index, > if (shmem_huge == SHMEM_HUGE_FORCE) > goto alloc_huge; > switch (sbinfo->huge) { > - loff_t i_size; > - pgoff_t off; > case SHMEM_HUGE_NEVER: > goto alloc_nohuge; > case SHMEM_HUGE_WITHIN_SIZE: > diff --git a/net/core/skbuff.c b/net/core/skbuff.c > index 26d848484912..7597b3fc9d21 100644 > --- a/net/core/skbuff.c > +++ b/net/core/skbuff.c > @@ -4506,9 +4506,9 @@ static __sum16 *skb_checksum_setup_ip(struct sk_buff *skb, > typeof(IPPROTO_IP) proto, > unsigned int off) > { > - switch (proto) { > - int err; > + int err; > > + switch (proto) { > case IPPROTO_TCP: > err = skb_maybe_pull_tail(skb, off + sizeof(struct tcphdr), > off + MAX_TCP_HDR_LEN); > diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c > index b1be67ca6768..9aee1add46c0 100644 > --- a/net/ipv6/ip6_gre.c > +++ b/net/ipv6/ip6_gre.c > @@ -427,9 +427,11 @@ static int ip6gre_err(struct sk_buff *skb, struct inet6_skb_parm *opt, > u8 type, u8 code, int offset, __be32 info) > { > struct net *net = dev_net(skb->dev); > + struct ipv6_tlv_tnl_enc_lim *tel; > const struct ipv6hdr *ipv6h; > struct tnl_ptk_info tpi; > struct ip6_tnl *t; > + __u32 teli; > > if (gre_parse_header(skb, &tpi, NULL, htons(ETH_P_IPV6), > offset) < 0) > @@ -442,8 +444,6 @@ static int ip6gre_err(struct sk_buff *skb, struct inet6_skb_parm *opt, > return -ENOENT; > > switch (type) { > - struct ipv6_tlv_tnl_enc_lim *tel; > - __u32 teli; > case ICMPV6_DEST_UNREACH: > net_dbg_ratelimited("%s: Path to destination invalid or inactive!\n", > t->parms.name); > diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c > index 0c6403cf8b52..94ccc7a9037b 100644 > --- a/net/ipv6/ip6_tunnel.c > +++ b/net/ipv6/ip6_tunnel.c > @@ -478,10 +478,12 @@ ip6_tnl_err(struct sk_buff *skb, __u8 ipproto, struct inet6_skb_parm *opt, > struct net *net = dev_net(skb->dev); > u8 rel_type = ICMPV6_DEST_UNREACH; > u8 rel_code = ICMPV6_ADDR_UNREACH; > + struct ipv6_tlv_tnl_enc_lim *tel; > __u32 rel_info = 0; > struct ip6_tnl *t; > int err = -ENOENT; > int rel_msg = 0; > + __u32 mtu, teli; > u8 tproto; > __u16 len; > > @@ -501,8 +503,6 @@ ip6_tnl_err(struct sk_buff *skb, __u8 ipproto, struct inet6_skb_parm *opt, > err = 0; > > switch (*type) { > - struct ipv6_tlv_tnl_enc_lim *tel; > - __u32 mtu, teli; > case ICMPV6_DEST_UNREACH: > net_dbg_ratelimited("%s: Path to destination invalid or inactive!\n", > t->parms.name); > diff --git a/net/openvswitch/flow_netlink.c b/net/openvswitch/flow_netlink.c > index 691da853bef5..dee2f9516ae8 100644 > --- a/net/openvswitch/flow_netlink.c > +++ b/net/openvswitch/flow_netlink.c > @@ -2652,8 +2652,11 @@ static int validate_set(const struct nlattr *a, > u8 mac_proto, __be16 eth_type, bool masked, bool log) > { > const struct nlattr *ovs_key = nla_data(a); > + const struct ovs_key_ipv4 *ipv4_key; > + const struct ovs_key_ipv6 *ipv6_key; > int key_type = nla_type(ovs_key); > size_t key_len; > + int err; > > /* There can be only one key in a action */ > if (nla_total_size(nla_len(ovs_key)) != nla_len(a)) > @@ -2671,10 +2674,6 @@ static int validate_set(const struct nlattr *a, > return -EINVAL; > > switch (key_type) { > - const struct ovs_key_ipv4 *ipv4_key; > - const struct ovs_key_ipv6 *ipv6_key; > - int err; > - > case OVS_KEY_ATTR_PRIORITY: > case OVS_KEY_ATTR_SKB_MARK: > case OVS_KEY_ATTR_CT_MARK: > diff --git a/security/tomoyo/common.c b/security/tomoyo/common.c > index c598aa00d5e3..bedbd0518153 100644 > --- a/security/tomoyo/common.c > +++ b/security/tomoyo/common.c > @@ -1583,8 +1583,9 @@ static void tomoyo_read_domain(struct tomoyo_io_buffer *head) > list_for_each_cookie(head->r.domain, &tomoyo_domain_list) { > struct tomoyo_domain_info *domain = > list_entry(head->r.domain, typeof(*domain), list); > + u8 i; > + > switch (head->r.step) { > - u8 i; > case 0: > if (domain->is_deleted && > !head->r.print_this_domain_only) > diff --git a/security/tomoyo/condition.c b/security/tomoyo/condition.c > index 8d0e1b9c9c57..c10d903febe5 100644 > --- a/security/tomoyo/condition.c > +++ b/security/tomoyo/condition.c > @@ -787,10 +787,11 @@ bool tomoyo_condition(struct tomoyo_request_info *r, > /* Check string expressions. */ > if (right == TOMOYO_NAME_UNION) { > const struct tomoyo_name_union *ptr = names_p++; > + struct tomoyo_path_info *symlink; > + struct tomoyo_execve *ee; > + struct file *file; > + > switch (left) { > - struct tomoyo_path_info *symlink; > - struct tomoyo_execve *ee; > - struct file *file; > case TOMOYO_SYMLINK_TARGET: > symlink = obj ? obj->symlink_target : NULL; > if (!symlink || > diff --git a/security/tomoyo/util.c b/security/tomoyo/util.c > index badffc8271c8..8e2bb36df37b 100644 > --- a/security/tomoyo/util.c > +++ b/security/tomoyo/util.c > @@ -668,6 +668,8 @@ static bool tomoyo_file_matches_pattern2(const char *filename, > { > while (filename < filename_end && pattern < pattern_end) { > char c; > + int i, j; > + > if (*pattern != '\\') { > if (*filename++ != *pattern++) > return false; > @@ -676,8 +678,6 @@ static bool tomoyo_file_matches_pattern2(const char *filename, > c = *filename; > pattern++; > switch (*pattern) { > - int i; > - int j; > case '?': > if (c == '/') { > return false; > -- > 2.17.1