diff options
| author | Jerry Jelinek <jerry.jelinek@joyent.com> | 2019-01-18 13:03:13 +0000 |
|---|---|---|
| committer | Jerry Jelinek <jerry.jelinek@joyent.com> | 2019-01-18 13:03:13 +0000 |
| commit | 25b01135ad8be1fdedfb11fb76ed33f61b342df1 (patch) | |
| tree | 66b5155562ac8306d53e7b77356f75327b66d125 /usr/src/uts | |
| parent | 67fad88d8d5136137ff0cacefc56a2f296803cc0 (diff) | |
| parent | 2dc5cbd37af38054ac6aab88a3ecee22a13ed2eb (diff) | |
| download | illumos-joyent-25b01135ad8be1fdedfb11fb76ed33f61b342df1.tar.gz | |
[illumos-gate merge]
commit 2dc5cbd37af38054ac6aab88a3ecee22a13ed2eb
9312 ctf: be less clever about skipping 'extern' variables declarations
9864 DWARF->CTF enum conversion needs to be careful of sign
commit 50971960b7b1866cdd785b20a4df98c90c231638
10224 memset_s() is not visible in global C++ namespace
commit 7c9ce9e029489432cc8d45437d8ecd0b9750d68d
10194 iscsi: this statement may fall through
commit 71222654120258353fa867d14ad838c458c823d7
10193 ddi_intr: cast between incompatible function types
commit 1b9bce10d88d75c318f27b82ba816b744c6f1075
10190 aphysio: cast between incompatible function types
commit b94c9724091d6587cd76f6ec562dc8888e3f31c0
10189 fdbuffer: cast between incompatible function types
commit f3618278e9f3d420057d55d344e871e4d0c45517
10188 libast: cast between incompatible function types
commit f91fcf59ac2fd04f1816f3dcbc69a46d44276a65
10165 libzpool: passing argument 1 to restrict-qualified parameter aliases with argument 4
commit 04443fde3a2688e592571a7bcca114860cf07bb3
10025 qede: rename OFFSETOF to offsetof and remove local definitions
commit 24c5c9f44237084e2bc735b78e3c0009959de21b
10088 ldterm_do_ioctl() shouldn't check for a NULL array
commit 80e3e2368f7911a78a5f2f1a961052b37f3a76d0
10087 atge_attach() doesn't need to check for kmem_zalloc() success
commit bb54aa2057d4245bc905df8c193acb7b8b0bb74b
10086 ixgbe_m_propinfo() is missing an 'else'
commit c1bf5ca093201aa1b43846f6bc194c780f03599e
10085 sctp_getpeeraddrs() doesn't need to check for a NULL primary
commit f19903c648bc62d61c7a20de6269dc85395c965b
10084 fop_open() doesn't need to check for a NULL vnode
commit d6294894f9d15dfb12a0dd3a6acf8bd4a4a65408
10083 smatch fixes for common/fs/vfs.c
commit 598f111b6a2800d5bd143949a1bdb1e786a92fc3
10082 intel_nhm is checking for NULL arrays
commit 45ca53447fde2f014d6d62f6bbbfc0b97ae011dd
10215 lofiadm -la fails after lofiadm -a / lofiadm -d
Diffstat (limited to 'usr/src/uts')
24 files changed, 119 insertions, 113 deletions
diff --git a/usr/src/uts/common/fs/fdbuffer.c b/usr/src/uts/common/fs/fdbuffer.c index d90bbc89b0..1836aa81b1 100644 --- a/usr/src/uts/common/fs/fdbuffer.c +++ b/usr/src/uts/common/fs/fdbuffer.c @@ -408,7 +408,7 @@ fdb_iosetup(fdbuffer_t *fdb, u_offset_t off, size_t len, struct vnode *vp, }; bp = bioclone(fdb->fd_parentbp, off, len, 0, 0, - (b_flags & B_ASYNC) ? (int (*)())fdb_iodone : NULL, + (b_flags & B_ASYNC) ? fdb_iodone : NULL, NULL, KM_SLEEP); bp->b_forw = (struct buf *)fdb; @@ -459,7 +459,7 @@ fdb_ioerrdone(fdbuffer_t *fdb, int error) fdb->fd_iofunc(fdb, fdb->fd_iargp, NULL); } -void +int fdb_iodone(buf_t *bp) { fdbuffer_t *fdb = (fdbuffer_t *)bp->b_forw; @@ -525,4 +525,5 @@ fdb_iodone(buf_t *bp) } freerbuf(bp); + return (0); } diff --git a/usr/src/uts/common/fs/vfs.c b/usr/src/uts/common/fs/vfs.c index 5a88c3e69d..49a1bf70b9 100644 --- a/usr/src/uts/common/fs/vfs.c +++ b/usr/src/uts/common/fs/vfs.c @@ -21,7 +21,7 @@ /* * Copyright (c) 1988, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2016 Joyent, Inc. + * Copyright (c) 2019, Joyent, Inc. * Copyright 2016 Toomas Soome <tsoome@me.com> * Copyright (c) 2016, 2017 by Delphix. All rights reserved. * Copyright 2016 Nexenta Systems, Inc. @@ -1033,7 +1033,7 @@ out: static void lofi_remove(struct vfs *vfsp) { - struct lofi_ioctl *li = NULL; + struct lofi_ioctl *li; ldi_ident_t ldi_id; ldi_handle_t ldi_hdl; int err; @@ -1063,8 +1063,7 @@ lofi_remove(struct vfs *vfsp) out: ldi_ident_release(ldi_id); - if (li != NULL) - kmem_free(li, sizeof (*li)); + kmem_free(li, sizeof (*li)); } /* @@ -4236,7 +4235,7 @@ vfsinit(void) for (vswp = &vfssw[1]; vswp < &vfssw[nfstype]; vswp++) { RLOCK_VFSSW(); if (vswp->vsw_init != NULL) - (*vswp->vsw_init)(vswp - vfssw, vswp->vsw_name); + (void) (*vswp->vsw_init)(vswp - vfssw, vswp->vsw_name); RUNLOCK_VFSSW(); } diff --git a/usr/src/uts/common/fs/vnode.c b/usr/src/uts/common/fs/vnode.c index e0a328c6d3..d5262214f5 100644 --- a/usr/src/uts/common/fs/vnode.c +++ b/usr/src/uts/common/fs/vnode.c @@ -21,7 +21,7 @@ /* * Copyright (c) 1988, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2017, Joyent, Inc. + * Copyright (c) 2018, Joyent, Inc. * Copyright 2016 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2011, 2017 by Delphix. All rights reserved. */ @@ -3384,7 +3384,7 @@ fop_open( * reflect the vnode switch. */ VOPSTATS_UPDATE(*vpp, open); - if (*vpp != vp && *vpp != NULL) { + if (*vpp != vp) { vn_copypath(vp, *vpp); if (((*vpp)->v_type == VREG) && (mode & FREAD)) atomic_inc_32(&(*vpp)->v_rdcnt); diff --git a/usr/src/uts/common/fs/zfs/dsl_dataset.c b/usr/src/uts/common/fs/zfs/dsl_dataset.c index a08477e29d..5428f94813 100644 --- a/usr/src/uts/common/fs/zfs/dsl_dataset.c +++ b/usr/src/uts/common/fs/zfs/dsl_dataset.c @@ -2130,7 +2130,10 @@ dsl_get_mountpoint(dsl_dataset_t *ds, const char *dsname, char *value, return (error); } - /* Process the dsname and source to find the full mountpoint string */ + /* + * Process the dsname and source to find the full mountpoint string. + * Can be skipped for 'legacy' or 'none'. + */ if (value[0] == '/') { char *buf = kmem_alloc(ZAP_MAXVALUELEN, KM_SLEEP); char *root = buf; @@ -2181,10 +2184,8 @@ dsl_get_mountpoint(dsl_dataset_t *ds, const char *dsname, char *value, relpath); } kmem_free(buf, ZAP_MAXVALUELEN); - } else { - /* 'legacy' or 'none' */ - (void) snprintf(value, ZAP_MAXVALUELEN, "%s", value); } + return (0); } diff --git a/usr/src/uts/common/inet/sctp/sctp_opt_data.c b/usr/src/uts/common/inet/sctp/sctp_opt_data.c index 6d6d4bdf3c..23abeccf96 100644 --- a/usr/src/uts/common/inet/sctp/sctp_opt_data.c +++ b/usr/src/uts/common/inet/sctp/sctp_opt_data.c @@ -23,6 +23,10 @@ * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. */ +/* + * Copyright (c) 2018, Joyent, Inc. + */ + #include <sys/types.h> #include <sys/stream.h> #define _SUN_TPI_VERSION 2 @@ -1493,7 +1497,6 @@ sctp_getpeeraddrs(sctp_t *sctp, void *paddrs, int *addrcnt) sin6->sin6_family = AF_INET6; sin6->sin6_flowinfo = connp->conn_flowinfo; if (IN6_IS_ADDR_LINKSCOPE(&addr) && - sctp->sctp_primary != NULL && (sctp->sctp_primary->sf_ixa->ixa_flags & IXAF_SCOPEID_SET)) { sin6->sin6_scope_id = diff --git a/usr/src/uts/common/io/atge/atge_main.c b/usr/src/uts/common/io/atge/atge_main.c index e8622eb72c..b7b3cd48c7 100644 --- a/usr/src/uts/common/io/atge/atge_main.c +++ b/usr/src/uts/common/io/atge/atge_main.c @@ -23,6 +23,8 @@ * Copyright (c) 2012 Gary Mills * * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. + * + * Copyright (c) 2018, Joyent, Inc. */ /* * Copyright (c) 2009, Pyun YongHyeon <yongari@FreeBSD.org> @@ -1352,9 +1354,7 @@ fail3: fail2: pci_config_teardown(&atgep->atge_conf_handle); fail1: - if (atgep) - kmem_free(atgep, sizeof (atge_t)); - + kmem_free(atgep, sizeof (atge_t)); return (DDI_FAILURE); } diff --git a/usr/src/uts/common/io/ixgbe/ixgbe_gld.c b/usr/src/uts/common/io/ixgbe/ixgbe_gld.c index 83877f6c27..ea888220fa 100644 --- a/usr/src/uts/common/io/ixgbe/ixgbe_gld.c +++ b/usr/src/uts/common/io/ixgbe/ixgbe_gld.c @@ -27,7 +27,7 @@ * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2012 Nexenta Systems, Inc. All rights reserved. * Copyright 2016 OmniTI Computer Consulting, Inc. All rights reserved. - * Copyright (c) 2017, Joyent, Inc. + * Copyright (c) 2019, Joyent, Inc. */ #include "ixgbe_sw.h" @@ -817,11 +817,11 @@ ixgbe_m_propinfo(void *arg, const char *pr_name, mac_prop_id_t pr_num, value = DEFAULT_TX_OVERLOAD_THRESHOLD; } else if (strcmp(pr_name, "_tx_resched_thresh") == 0) { value = DEFAULT_TX_RESCHED_THRESHOLD; - } else if (strcmp(pr_name, "_rx_copy_thresh") == 0) { + } else if (strcmp(pr_name, "_rx_copy_thresh") == 0) { value = DEFAULT_RX_COPY_THRESHOLD; - } else if (strcmp(pr_name, "_rx_limit_per_intr") == 0) { + } else if (strcmp(pr_name, "_rx_limit_per_intr") == 0) { value = DEFAULT_RX_LIMIT_PER_INTR; - } if (strcmp(pr_name, "_intr_throttling") == 0) { + } else if (strcmp(pr_name, "_intr_throttling") == 0) { value = ixgbe->capab->def_intr_throttle; } else { return; diff --git a/usr/src/uts/common/io/ldterm.c b/usr/src/uts/common/io/ldterm.c index 2bf991769d..498d2d9bee 100644 --- a/usr/src/uts/common/io/ldterm.c +++ b/usr/src/uts/common/io/ldterm.c @@ -21,7 +21,7 @@ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. - * Copyright (c) 2014, Joyent, Inc. All rights reserved. + * Copyright (c) 2018, Joyent, Inc. * Copyright 2018 OmniOS Community Edition (OmniOSce) Association. */ @@ -4599,22 +4599,21 @@ ldterm_do_ioctl(queue_t *q, mblk_t *mp) } locale_name_sz = 0; - if (csdp->locale_name) { - for (i = 0; i < MAXNAMELEN; i++) - if (csdp->locale_name[i] == '\0') - break; - /* - * We cannot have any string that is not NULL byte - * terminated. - */ - if (i >= MAXNAMELEN) { - miocnak(q, mp, 0, ERANGE); - return; - } - locale_name_sz = i + 1; + for (i = 0; i < MAXNAMELEN; i++) + if (csdp->locale_name[i] == '\0') + break; + /* + * We cannot have any string that is not NULL byte + * terminated. + */ + if (i >= MAXNAMELEN) { + miocnak(q, mp, 0, ERANGE); + return; } + locale_name_sz = i + 1; + /* * As the final check, if there was invalid codeset_type * given, or invalid byte_length was specified, it's an error. diff --git a/usr/src/uts/common/io/lofi.c b/usr/src/uts/common/io/lofi.c index 1169f3fdfc..e8d82a6688 100644 --- a/usr/src/uts/common/io/lofi.c +++ b/usr/src/uts/common/io/lofi.c @@ -2955,6 +2955,7 @@ lofi_unmap_file(struct lofi_ioctl *ulip, int byfilename, { struct lofi_state *lsp; struct lofi_ioctl *klip; + char namebuf[MAXNAMELEN]; int err; err = copy_in_lofi_ioctl(ulip, &klip, ioctl_flag); @@ -2980,6 +2981,7 @@ lofi_unmap_file(struct lofi_ioctl *ulip, int byfilename, } klip->li_id = LOFI_MINOR2ID(getminor(lsp->ls_dev)); + (void) snprintf(namebuf, sizeof (namebuf), "%u", klip->li_id); /* * If it's still held open, we'll do one of three things: @@ -3024,6 +3026,10 @@ lofi_unmap_file(struct lofi_ioctl *ulip, int byfilename, lofi_destroy(lsp, credp); } + /* Remove name from devlink cache */ + mutex_enter(&lofi_devlink_cache.ln_lock); + (void) nvlist_remove_all(lofi_devlink_cache.ln_data, namebuf); + mutex_exit(&lofi_devlink_cache.ln_lock); done: mutex_exit(&lofi_lock); if (err == 0) diff --git a/usr/src/uts/common/io/qede/579xx/drivers/ecore/bcm_osal.h b/usr/src/uts/common/io/qede/579xx/drivers/ecore/bcm_osal.h index bb802ea37c..3226811cba 100644 --- a/usr/src/uts/common/io/qede/579xx/drivers/ecore/bcm_osal.h +++ b/usr/src/uts/common/io/qede/579xx/drivers/ecore/bcm_osal.h @@ -534,20 +534,6 @@ u32 LOG2(u32); #define DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d)) #define ROUNDUP(x, y) ((((x) + ((y) - 1)) / (y)) * (y)) - -/* - * @VB: Don't want to include sys/sysmacros.h just - * for the offsetof macro - */ -#ifndef OFFSETOF -#define OFFSETOF(type, member) ((size_t) (&(((type *)0)->member))) -/*#define offsetof(type, member) ((size_t) (&(((type *)0)->member)))*/ -#endif - -#ifndef offsetof -#define offsetof(type, member) ((size_t) (&(((type *)0)->member))) -#endif - void qede_print(char *format, ...); void qede_print_err(char *format, ...); diff --git a/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_dbg_fw_funcs.c b/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_dbg_fw_funcs.c index 62c6a7ada4..5092d4ba39 100644 --- a/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_dbg_fw_funcs.c +++ b/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_dbg_fw_funcs.c @@ -531,7 +531,7 @@ struct phy_defs { #define PROTECTION_OVERRIDE_DEPTH_ELEMENTS 20 #define PROTECTION_OVERRIDE_DEPTH_DWORDS (PROTECTION_OVERRIDE_DEPTH_ELEMENTS * PROTECTION_OVERRIDE_ELEMENT_DWORDS) -#define MCP_SPAD_TRACE_OFFSIZE_ADDR (MCP_REG_SCRATCH + OFFSETOF(struct static_init, sections[SPAD_SECTION_TRACE])) +#define MCP_SPAD_TRACE_OFFSIZE_ADDR (MCP_REG_SCRATCH + offsetof(struct static_init, sections[SPAD_SECTION_TRACE])) #define EMPTY_FW_VERSION_STR "???_???_???_???" #define EMPTY_FW_IMAGE_STR "???????????????" @@ -2113,12 +2113,12 @@ static u32 ecore_dump_mfw_ver_param(struct ecore_hwfn *p_hwfn, public_data_addr = ecore_rd(p_hwfn, p_ptt, MISC_REG_SHARED_MEM_ADDR) | MCP_REG_SCRATCH; /* Find MCP public global section offset */ - global_section_offsize_addr = public_data_addr + OFFSETOF(struct mcp_public_data, sections) + sizeof(offsize_t) * PUBLIC_GLOBAL; + global_section_offsize_addr = public_data_addr + offsetof(struct mcp_public_data, sections) + sizeof(offsize_t) * PUBLIC_GLOBAL; global_section_offsize = ecore_rd(p_hwfn, p_ptt, global_section_offsize_addr); global_section_addr = MCP_REG_SCRATCH + (global_section_offsize & OFFSIZE_OFFSET_MASK) * 4; /* Read MFW version from MCP public global section */ - mfw_ver = ecore_rd(p_hwfn, p_ptt, global_section_addr + OFFSETOF(struct public_global, mfw_ver)); + mfw_ver = ecore_rd(p_hwfn, p_ptt, global_section_addr + offsetof(struct public_global, mfw_ver)); /* Dump MFW version param */ if (OSAL_SNPRINTF(mfw_ver_str, sizeof(mfw_ver_str), "%d_%d_%d_%d", (u8)(mfw_ver >> 24), (u8)(mfw_ver >> 16), (u8)(mfw_ver >> 8), (u8)mfw_ver) < 0) @@ -4472,13 +4472,13 @@ static enum dbg_status ecore_mcp_trace_get_data_info(struct ecore_hwfn *p_hwfn, *trace_data_grc_addr = MCP_REG_SCRATCH + SECTION_OFFSET(spad_trace_offsize); /* Read signature from MCP trace section */ - signature = ecore_rd(p_hwfn, p_ptt, *trace_data_grc_addr + OFFSETOF(struct mcp_trace, signature)); + signature = ecore_rd(p_hwfn, p_ptt, *trace_data_grc_addr + offsetof(struct mcp_trace, signature)); if (signature != MFW_TRACE_SIGNATURE) return DBG_STATUS_INVALID_TRACE_SIGNATURE; /* Read trace size from MCP trace section */ - *trace_data_size = ecore_rd(p_hwfn, p_ptt, *trace_data_grc_addr + OFFSETOF(struct mcp_trace, size)); + *trace_data_size = ecore_rd(p_hwfn, p_ptt, *trace_data_grc_addr + offsetof(struct mcp_trace, size)); return DBG_STATUS_OK; } diff --git a/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_dev.c b/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_dev.c index f8f7d1a396..272ff2964a 100644 --- a/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_dev.c +++ b/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_dev.c @@ -3310,8 +3310,8 @@ ecore_hw_get_nvm_info(struct ecore_hwfn *p_hwfn, nvm_cfg1_offset = ecore_rd(p_hwfn, p_ptt, nvm_cfg_addr + 4); addr = MCP_REG_SCRATCH + nvm_cfg1_offset + - OFFSETOF(struct nvm_cfg1, glob) + - OFFSETOF(struct nvm_cfg1_glob, core_cfg); + offsetof(struct nvm_cfg1, glob) + + offsetof(struct nvm_cfg1_glob, core_cfg); core_cfg = ecore_rd(p_hwfn, p_ptt, addr); @@ -3358,10 +3358,10 @@ ecore_hw_get_nvm_info(struct ecore_hwfn *p_hwfn, /* Read DCBX configuration */ port_cfg_addr = MCP_REG_SCRATCH + nvm_cfg1_offset + - OFFSETOF(struct nvm_cfg1, port[MFW_PORT(p_hwfn)]); + offsetof(struct nvm_cfg1, port[MFW_PORT(p_hwfn)]); dcbx_mode = ecore_rd(p_hwfn, p_ptt, port_cfg_addr + - OFFSETOF(struct nvm_cfg1_port, generic_cont0)); + offsetof(struct nvm_cfg1_port, generic_cont0)); dcbx_mode = (dcbx_mode & NVM_CFG1_PORT_DCBX_MODE_MASK) >> NVM_CFG1_PORT_DCBX_MODE_OFFSET; switch (dcbx_mode) { @@ -3382,17 +3382,17 @@ ecore_hw_get_nvm_info(struct ecore_hwfn *p_hwfn, link = &p_hwfn->mcp_info->link_input; p_caps = &p_hwfn->mcp_info->link_capabilities; port_cfg_addr = MCP_REG_SCRATCH + nvm_cfg1_offset + - OFFSETOF(struct nvm_cfg1, port[MFW_PORT(p_hwfn)]); + offsetof(struct nvm_cfg1, port[MFW_PORT(p_hwfn)]); link_temp = ecore_rd(p_hwfn, p_ptt, port_cfg_addr + - OFFSETOF(struct nvm_cfg1_port, speed_cap_mask)); + offsetof(struct nvm_cfg1_port, speed_cap_mask)); link_temp &= NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_MASK; link->speed.advertised_speeds = link_temp; p_caps->speed_capabilities = link->speed.advertised_speeds; link_temp = ecore_rd(p_hwfn, p_ptt, port_cfg_addr + - OFFSETOF(struct nvm_cfg1_port, link_settings)); + offsetof(struct nvm_cfg1_port, link_settings)); switch ((link_temp & NVM_CFG1_PORT_DRV_LINK_SPEED_MASK) >> NVM_CFG1_PORT_DRV_LINK_SPEED_OFFSET) { case NVM_CFG1_PORT_DRV_LINK_SPEED_AUTONEG: @@ -3436,7 +3436,7 @@ ecore_hw_get_nvm_info(struct ecore_hwfn *p_hwfn, if (p_hwfn->mcp_info->capabilities & FW_MB_PARAM_FEATURE_SUPPORT_EEE) { link_temp = ecore_rd(p_hwfn, p_ptt, port_cfg_addr + - OFFSETOF(struct nvm_cfg1_port, ext_phy)); + offsetof(struct nvm_cfg1_port, ext_phy)); link_temp &= NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_MASK; link_temp >>= NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_OFFSET; p_caps->default_eee = ECORE_MCP_EEE_ENABLED; @@ -3474,8 +3474,8 @@ ecore_hw_get_nvm_info(struct ecore_hwfn *p_hwfn, /* Read Multi-function information from shmem */ addr = MCP_REG_SCRATCH + nvm_cfg1_offset + - OFFSETOF(struct nvm_cfg1, glob) + - OFFSETOF(struct nvm_cfg1_glob, generic_cont0); + offsetof(struct nvm_cfg1, glob) + + offsetof(struct nvm_cfg1_glob, generic_cont0); generic_cont0 = ecore_rd(p_hwfn, p_ptt, addr); @@ -3498,8 +3498,8 @@ ecore_hw_get_nvm_info(struct ecore_hwfn *p_hwfn, /* Read Multi-function information from shmem */ addr = MCP_REG_SCRATCH + nvm_cfg1_offset + - OFFSETOF(struct nvm_cfg1, glob) + - OFFSETOF(struct nvm_cfg1_glob, device_capabilities); + offsetof(struct nvm_cfg1, glob) + + offsetof(struct nvm_cfg1_glob, device_capabilities); device_capabilities = ecore_rd(p_hwfn, p_ptt, addr); if (device_capabilities & NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ETHERNET) diff --git a/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_hw.c b/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_hw.c index b365901c21..15ea8f7541 100644 --- a/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_hw.c +++ b/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_hw.c @@ -199,7 +199,7 @@ void ecore_ptt_set_win(struct ecore_hwfn *p_hwfn, REG_WR(p_hwfn, ecore_ptt_config_addr(p_ptt) + - OFFSETOF(struct pxp_ptt_entry, offset), + offsetof(struct pxp_ptt_entry, offset), OSAL_LE32_TO_CPU(p_ptt->pxp.offset)); } @@ -394,7 +394,7 @@ void ecore_fid_pretend(struct ecore_hwfn *p_hwfn, REG_WR(p_hwfn, ecore_ptt_config_addr(p_ptt) + - OFFSETOF(struct pxp_ptt_entry, pretend), + offsetof(struct pxp_ptt_entry, pretend), *(u32 *)&p_ptt->pxp.pretend); } @@ -410,7 +410,7 @@ void ecore_port_pretend(struct ecore_hwfn *p_hwfn, REG_WR(p_hwfn, ecore_ptt_config_addr(p_ptt) + - OFFSETOF(struct pxp_ptt_entry, pretend), + offsetof(struct pxp_ptt_entry, pretend), *(u32 *)&p_ptt->pxp.pretend); } @@ -427,7 +427,7 @@ void ecore_port_unpretend(struct ecore_hwfn *p_hwfn, REG_WR(p_hwfn, ecore_ptt_config_addr(p_ptt) + - OFFSETOF(struct pxp_ptt_entry, pretend), + offsetof(struct pxp_ptt_entry, pretend), *(u32 *)&p_ptt->pxp.pretend); } diff --git a/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_l2.c b/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_l2.c index e17f88cf18..343eee9ee7 100644 --- a/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_l2.c +++ b/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_l2.c @@ -1886,7 +1886,7 @@ static void __ecore_get_vport_port_stats(struct ecore_hwfn *p_hwfn, ecore_memcpy_from(p_hwfn, p_ptt, &port_stats, p_hwfn->mcp_info->port_addr + - OFFSETOF(struct public_port, stats), + offsetof(struct public_port, stats), sizeof(port_stats)); p_common->rx_64_byte_packets += port_stats.eth.r64; diff --git a/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_mcp.c b/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_mcp.c index a2450dc34c..02700f9126 100644 --- a/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_mcp.c +++ b/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_mcp.c @@ -70,11 +70,11 @@ #define DRV_MB_WR(_p_hwfn, _p_ptt, _field, _val) \ DRV_INNER_WR(p_hwfn, _p_ptt, drv_mb_addr, \ - OFFSETOF(struct public_drv_mb, _field), _val) + offsetof(struct public_drv_mb, _field), _val) #define DRV_MB_RD(_p_hwfn, _p_ptt, _field) \ DRV_INNER_RD(_p_hwfn, _p_ptt, drv_mb_addr, \ - OFFSETOF(struct public_drv_mb, _field)) + offsetof(struct public_drv_mb, _field)) #define PDA_COMP (((FW_MAJOR_VERSION) + (FW_MINOR_VERSION << 8)) << \ DRV_ID_PDA_COMP_VER_SHIFT) @@ -456,7 +456,7 @@ static enum _ecore_status_t ecore_mcp_cmd_and_union(struct ecore_hwfn *p_hwfn, } union_data_addr = p_hwfn->mcp_info->drv_mb_addr + - OFFSETOF(struct public_drv_mb, union_data); + offsetof(struct public_drv_mb, union_data); /* Ensure that only a single thread is accessing the mailbox at a * certain time. @@ -1066,7 +1066,7 @@ static void ecore_mcp_handle_vf_flr(struct ecore_hwfn *p_hwfn, for (i = 0; i < (VF_MAX_STATIC / 32); i++) { disabled_vfs[i] = ecore_rd(p_hwfn, p_ptt, path_addr + - OFFSETOF(struct public_path, + offsetof(struct public_path, mcp_vf_disabled) + sizeof(u32) * i); DP_VERBOSE(p_hwfn, (ECORE_MSG_SP | ECORE_MSG_IOV), @@ -1111,7 +1111,7 @@ enum _ecore_status_t ecore_mcp_ack_vf_flr(struct ecore_hwfn *p_hwfn, for (i = 0; i < (VF_MAX_STATIC / 32); i++) ecore_wr(p_hwfn, p_ptt, func_addr + - OFFSETOF(struct public_func, drv_ack_vf_disabled) + + offsetof(struct public_func, drv_ack_vf_disabled) + i * sizeof(u32), 0); return rc; @@ -1124,13 +1124,13 @@ static void ecore_mcp_handle_transceiver_change(struct ecore_hwfn *p_hwfn, transceiver_state = ecore_rd(p_hwfn, p_ptt, p_hwfn->mcp_info->port_addr + - OFFSETOF(struct public_port, + offsetof(struct public_port, transceiver_data)); DP_VERBOSE(p_hwfn, (ECORE_MSG_HW | ECORE_MSG_SP), "Received transceiver state update [0x%08x] from mfw [Addr 0x%x]\n", transceiver_state, (u32)(p_hwfn->mcp_info->port_addr + - OFFSETOF(struct public_port, + offsetof(struct public_port, transceiver_data))); transceiver_state = GET_FIELD(transceiver_state, ETH_TRANSCEIVER_STATE); @@ -1150,7 +1150,7 @@ static void ecore_mcp_read_eee_config(struct ecore_hwfn *p_hwfn, p_link->eee_adv_caps = 0; p_link->eee_lp_adv_caps = 0; eee_status = ecore_rd(p_hwfn, p_ptt, p_hwfn->mcp_info->port_addr + - OFFSETOF(struct public_port, eee_status)); + offsetof(struct public_port, eee_status)); p_link->eee_active = !!(eee_status & EEE_ACTIVE_BIT); val = (eee_status & EEE_LD_ADV_STATUS_MASK) >> EEE_LD_ADV_STATUS_SHIFT; if (val & EEE_1G_ADV) @@ -1180,11 +1180,11 @@ static void ecore_mcp_handle_link_change(struct ecore_hwfn *p_hwfn, if (!b_reset) { status = ecore_rd(p_hwfn, p_ptt, p_hwfn->mcp_info->port_addr + - OFFSETOF(struct public_port, link_status)); + offsetof(struct public_port, link_status)); DP_VERBOSE(p_hwfn, (ECORE_MSG_LINK | ECORE_MSG_SP), "Received link update [0x%08x] from mfw [Addr 0x%x]\n", status, (u32)(p_hwfn->mcp_info->port_addr + - OFFSETOF(struct public_port, link_status))); + offsetof(struct public_port, link_status))); } else { DP_VERBOSE(p_hwfn, ECORE_MSG_LINK, "Resetting link indications\n"); @@ -1394,7 +1394,7 @@ u32 ecore_get_process_kill_counter(struct ecore_hwfn *p_hwfn, proc_kill_cnt = ecore_rd(p_hwfn, p_ptt, path_addr + - OFFSETOF(struct public_path, process_kill)) & + offsetof(struct public_path, process_kill)) & PROCESS_KILL_COUNTER_MASK; return proc_kill_cnt; @@ -1750,7 +1750,7 @@ ecore_mcp_mdump_get_info(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt, global_addr = SECTION_ADDR(global_offsize, 0); p_mdump_info->reason = ecore_rd(p_hwfn, p_ptt, global_addr + - OFFSETOF(struct public_global, + offsetof(struct public_global, mdump_reason)); if (p_mdump_info->reason) { @@ -1998,12 +1998,12 @@ enum _ecore_status_t ecore_mcp_get_mfw_ver(struct ecore_hwfn *p_hwfn, PUBLIC_GLOBAL)); *p_mfw_ver = ecore_rd(p_hwfn, p_ptt, SECTION_ADDR(global_offsize, 0) + - OFFSETOF(struct public_global, mfw_ver)); + offsetof(struct public_global, mfw_ver)); if (p_running_bundle_id != OSAL_NULL) { *p_running_bundle_id = ecore_rd(p_hwfn, p_ptt, SECTION_ADDR(global_offsize, 0) + - OFFSETOF(struct public_global, + offsetof(struct public_global, running_bundle_id)); } @@ -2037,8 +2037,8 @@ enum _ecore_status_t ecore_mcp_get_mbi_ver(struct ecore_hwfn *p_hwfn, nvm_cfg1_offset = ecore_rd(p_hwfn, p_ptt, nvm_cfg_addr + 4); mbi_ver_addr = MCP_REG_SCRATCH + nvm_cfg1_offset + - OFFSETOF(struct nvm_cfg1, glob) + - OFFSETOF(struct nvm_cfg1_glob, mbi_version); + offsetof(struct nvm_cfg1, glob) + + offsetof(struct nvm_cfg1_glob, mbi_version); *p_mbi_ver = ecore_rd(p_hwfn, p_ptt, mbi_ver_addr) & (NVM_CFG1_GLOB_MBI_VERSION_0_MASK | NVM_CFG1_GLOB_MBI_VERSION_1_MASK | @@ -2069,7 +2069,7 @@ enum _ecore_status_t ecore_mcp_get_media_type(struct ecore_dev *p_dev, return ECORE_BUSY; *p_media_type = ecore_rd(p_hwfn, p_ptt, p_hwfn->mcp_info->port_addr + - OFFSETOF(struct public_port, media_type)); + offsetof(struct public_port, media_type)); ecore_ptt_release(p_hwfn, p_ptt); @@ -2654,14 +2654,14 @@ ecore_mcp_ov_get_fc_npiv(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt, p_table->num_wwpn = 0; p_table->num_wwnn = 0; addr = ecore_rd(p_hwfn, p_ptt, p_hwfn->mcp_info->port_addr + - OFFSETOF(struct public_port, fc_npiv_nvram_tbl_addr)); + offsetof(struct public_port, fc_npiv_nvram_tbl_addr)); if (addr == NPIV_TBL_INVALID_ADDR) { DP_VERBOSE(p_hwfn, ECORE_MSG_SP, "NPIV table doesn't exist\n"); return rc; } size = ecore_rd(p_hwfn, p_ptt, p_hwfn->mcp_info->port_addr + - OFFSETOF(struct public_port, fc_npiv_nvram_tbl_size)); + offsetof(struct public_port, fc_npiv_nvram_tbl_size)); if (!size) { DP_VERBOSE(p_hwfn, ECORE_MSG_SP, "NPIV table is empty\n"); return rc; diff --git a/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_phy.c b/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_phy.c index 1bb37f7954..8d244ed096 100644 --- a/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_phy.c +++ b/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_phy.c @@ -1336,7 +1336,7 @@ int ecore_phy_sfp_get_inserted(struct ecore_hwfn *p_hwfn, transceiver_state = ecore_rd(p_hwfn, p_ptt, port_addr + - OFFSETOF(struct public_port, + offsetof(struct public_port, transceiver_data)); transceiver_state = GET_FIELD(transceiver_state, ETH_TRANSCEIVER_STATE); @@ -1456,10 +1456,10 @@ int ecore_phy_sfp_set_txdisable(struct ecore_hwfn *p_hwfn, nvm_cfg1_offset = ecore_rd(p_hwfn, p_ptt, nvm_cfg_addr + 4); port_cfg_addr = MCP_REG_SCRATCH + nvm_cfg1_offset + - OFFSETOF(struct nvm_cfg1, port[port]); + offsetof(struct nvm_cfg1, port[port]); gpio = (u16)ecore_rd(p_hwfn, p_ptt, port_cfg_addr + - OFFSETOF(struct nvm_cfg1_port, + offsetof(struct nvm_cfg1_port, transceiver_00)); gpio &= NVM_CFG1_PORT_TRANS_MODULE_ABS_MASK; rc = ecore_phy_gpio_write(p_hwfn, p_ptt, gpio, diff --git a/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_spq.c b/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_spq.c index 71dd89e00a..b96ec0d4c0 100644 --- a/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_spq.c +++ b/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore_spq.c @@ -579,7 +579,7 @@ void ecore_spq_setup(struct ecore_hwfn *p_hwfn) OSAL_SPIN_LOCK_INIT(&p_spq->lock); /* SPQ empty pool */ - p_phys = p_spq->p_phys + OFFSETOF(struct ecore_spq_entry, ramrod); + p_phys = p_spq->p_phys + offsetof(struct ecore_spq_entry, ramrod); p_virt = p_spq->p_virt; capacity = ecore_chain_get_capacity(&p_spq->chain); diff --git a/usr/src/uts/common/io/qede/qede_gld.c b/usr/src/uts/common/io/qede/qede_gld.c index f38e0f17cf..a75bd0debd 100644 --- a/usr/src/uts/common/io/qede/qede_gld.c +++ b/usr/src/uts/common/io/qede/qede_gld.c @@ -622,7 +622,7 @@ qede_transceiver_info(void *arg, uint_t id, mac_transceiver_info_t *infop) * us one bit. */ transceiver_state = ecore_rd(hwfn, ptt, hwfn->mcp_info->port_addr + - OFFSETOF(struct public_port, transceiver_data)); + offsetof(struct public_port, transceiver_data)); transceiver_state = GET_FIELD(transceiver_state, ETH_TRANSCEIVER_STATE); ecore_ptt_release(hwfn, ptt); diff --git a/usr/src/uts/common/io/scsi/adapters/iscsi/iscsi_login.c b/usr/src/uts/common/io/scsi/adapters/iscsi/iscsi_login.c index 3dc4f62888..42ddf9a9d4 100644 --- a/usr/src/uts/common/io/scsi/adapters/iscsi/iscsi_login.c +++ b/usr/src/uts/common/io/scsi/adapters/iscsi/iscsi_login.c @@ -2066,6 +2066,7 @@ iscsi_login_failure_str(uchar_t status_class, uchar_t status_detail) default: break; } + break; case 0x01: switch (status_detail) { case 0x01: @@ -2077,6 +2078,7 @@ iscsi_login_failure_str(uchar_t status_class, uchar_t status_detail) default: break; } + break; case 0x02: switch (status_detail) { case 0x00: @@ -2116,6 +2118,7 @@ iscsi_login_failure_str(uchar_t status_class, uchar_t status_detail) default: break; } + break; case 0x03: switch (status_detail) { case 0x00: @@ -2129,6 +2132,7 @@ iscsi_login_failure_str(uchar_t status_class, uchar_t status_detail) default: break; } + break; } return ("Unknown login response received."); } diff --git a/usr/src/uts/common/os/aio_subr.c b/usr/src/uts/common/os/aio_subr.c index ce8ed143b4..c857026a27 100644 --- a/usr/src/uts/common/os/aio_subr.c +++ b/usr/src/uts/common/os/aio_subr.c @@ -47,7 +47,7 @@ #include <sys/sdt.h> int aphysio(int (*)(), int (*)(), dev_t, int, void (*)(), struct aio_req *); -void aio_done(struct buf *); +int aio_done(struct buf *); void aphysio_unlock(aio_req_t *); void aio_cleanup(int); void aio_cleanup_exit(void); @@ -131,7 +131,7 @@ aphysio( * b_proc fields to cluster-specifc values. */ if (bp->b_iodone == NULL) { - bp->b_iodone = (int (*)()) aio_done; + bp->b_iodone = aio_done; /* b_forw points at an aio_req_t structure */ bp->b_forw = (struct buf *)reqp; bp->b_proc = curproc; @@ -188,7 +188,7 @@ anocancel(struct buf *bp) * by clustering s/w as contract private interface. */ -void +int aio_done(struct buf *bp) { proc_t *p; @@ -256,7 +256,7 @@ aio_done(struct buf *bp) port_send_event(pkevp); if (portevpend == 0) cv_broadcast(&aiop->aio_portcv); - return; + return (0); } if (aiop->aio_flags & AIO_CLEANUP) { @@ -271,7 +271,7 @@ aio_done(struct buf *bp) mutex_exit(&as->a_contents); mutex_exit(&aiop->aio_mutex); mutex_exit(&aiop->aio_portq_mutex); - return; + return (0); } aio_deq(&aiop->aio_portpending, reqp); @@ -336,7 +336,7 @@ aio_done(struct buf *bp) aiop->aio_flags &= ~AIO_DONE_ACTIVE; mutex_exit(&aiop->aio_mutex); } - return; + return (0); } /* @@ -425,6 +425,8 @@ aio_done(struct buf *bp) aio_sigev_send(p, lio_sigev); if (lio_pkevp) port_send_event(lio_pkevp); + + return (0); } /* diff --git a/usr/src/uts/common/os/ddi_intr.c b/usr/src/uts/common/os/ddi_intr.c index 6edef36fbb..1f4837e4d4 100644 --- a/usr/src/uts/common/os/ddi_intr.c +++ b/usr/src/uts/common/os/ddi_intr.c @@ -1333,7 +1333,9 @@ ddi_add_intr(dev_info_t *dip, uint_t inumber, size_t hdl_sz; int actual, ret; uint_t pri; + ddi_intr_handler_t *handler; + handler = (ddi_intr_handler_t *)(uintptr_t)int_handler; DDI_INTR_APIDBG((CE_CONT, "ddi_add_intr: name=%s%d dip=0x%p " "inum=0x%x\n", ddi_driver_name(dip), ddi_get_instance(dip), (void *)dip, inumber)); @@ -1357,8 +1359,8 @@ ddi_add_intr(dev_info_t *dip, uint_t inumber, return (DDI_FAILURE); } - if ((ret = ddi_intr_add_handler(hdl_p[inumber], (ddi_intr_handler_t *) - int_handler, int_handler_arg, NULL)) != DDI_SUCCESS) { + if ((ret = ddi_intr_add_handler(hdl_p[inumber], handler, + int_handler_arg, NULL)) != DDI_SUCCESS) { DDI_INTR_APIDBG((CE_CONT, "ddi_add_intr: " "ddi_intr_add_handler failed, ret 0x%x\n", ret)); (void) ddi_intr_free(hdl_p[inumber]); @@ -1469,7 +1471,9 @@ ddi_add_softintr(dev_info_t *dip, int preference, ddi_softintr_t *idp, ddi_softint_handle_t *hdl_p; uint64_t softpri; int ret; + ddi_intr_handler_t *handler; + handler = (ddi_intr_handler_t *)(uintptr_t)int_handler; DDI_INTR_APIDBG((CE_CONT, "ddi_add_softintr: name=%s%d dip=0x%p " "pref=0x%x\n", ddi_driver_name(dip), ddi_get_instance(dip), (void *)dip, preference)); @@ -1492,8 +1496,7 @@ ddi_add_softintr(dev_info_t *dip, int preference, ddi_softintr_t *idp, hdl_p = kmem_zalloc(sizeof (ddi_softint_handle_t), KM_SLEEP); if ((ret = ddi_intr_add_softint(dip, hdl_p, softpri, - (ddi_intr_handler_t *)int_handler, int_handler_arg)) != - DDI_SUCCESS) { + handler, int_handler_arg)) != DDI_SUCCESS) { DDI_INTR_APIDBG((CE_CONT, "ddi_add_softintr: " "ddi_intr_add_softint failed, ret 0x%x\n", ret)); diff --git a/usr/src/uts/common/sys/aio_impl.h b/usr/src/uts/common/sys/aio_impl.h index de8e7e7ee1..337397c20a 100644 --- a/usr/src/uts/common/sys/aio_impl.h +++ b/usr/src/uts/common/sys/aio_impl.h @@ -182,7 +182,7 @@ extern void aio_req_remove_portq(aio_t *, aio_req_t *); extern void aio_enq(aio_req_t **, aio_req_t *, int); extern void aio_deq(aio_req_t **, aio_req_t *); /* Clustering: PXFS module uses this interface */ -extern void aio_done(struct buf *); +extern int aio_done(struct buf *); #endif /* _KERNEL */ diff --git a/usr/src/uts/common/sys/fdbuffer.h b/usr/src/uts/common/sys/fdbuffer.h index a1a252653f..1e8144acf8 100644 --- a/usr/src/uts/common/sys/fdbuffer.h +++ b/usr/src/uts/common/sys/fdbuffer.h @@ -27,8 +27,6 @@ #ifndef _SYS_FDBUFFER_H #define _SYS_FDBUFFER_H -#pragma ident "%Z%%M% %I% %E% SMI" - #ifdef __cplusplus extern "C" { #endif @@ -153,7 +151,7 @@ extern void fdb_free(fdbuffer_t *fdbuf); extern void fdb_add_hole(fdbuffer_t *fdbuf, u_offset_t off, size_t len); extern buf_t *fdb_iosetup(fdbuffer_t *fdbuf, u_offset_t off, size_t len, struct vnode *vn, int flags); -extern void fdb_iodone(buf_t *bufp); +extern int fdb_iodone(buf_t *bufp); extern void fdb_ioerrdone(fdbuffer_t *fdbuf, int error); extern void fdb_init(void); diff --git a/usr/src/uts/intel/io/intel_nhm/dimm_topo.c b/usr/src/uts/intel/io/intel_nhm/dimm_topo.c index d1b835d94b..6c3b179aeb 100644 --- a/usr/src/uts/intel/io/intel_nhm/dimm_topo.c +++ b/usr/src/uts/intel/io/intel_nhm/dimm_topo.c @@ -24,6 +24,10 @@ * Use is subject to license terms. */ +/* + * Copyright (c) 2018, Joyent, Inc. + */ + #include <sys/types.h> #include <sys/time.h> #include <sys/nvpair.h> @@ -156,25 +160,25 @@ inhm_dimm(nhm_dimm_t *nhm_dimm, uint32_t node, uint8_t channel, uint32_t dimm) (void) nvlist_add_uint32(newdimm, "ranks", (uint32_t)nhm_dimm->nranks); inhm_rank(newdimm, nhm_dimm, node, channel, dimm, nhm_dimm->dimm_size / nhm_dimm->nranks); - if (nhm_dimm->manufacturer && nhm_dimm->manufacturer[0]) { + if (nhm_dimm->manufacturer[0]) { t = sizeof (nhm_dimm->manufacturer); (void) strncpy(sbuf, nhm_dimm->manufacturer, t); sbuf[t] = 0; (void) nvlist_add_string(newdimm, "manufacturer", sbuf); } - if (nhm_dimm->serial_number && nhm_dimm->serial_number[0]) { + if (nhm_dimm->serial_number[0]) { t = sizeof (nhm_dimm->serial_number); (void) strncpy(sbuf, nhm_dimm->serial_number, t); sbuf[t] = 0; (void) nvlist_add_string(newdimm, FM_FMRI_HC_SERIAL_ID, sbuf); } - if (nhm_dimm->part_number && nhm_dimm->part_number[0]) { + if (nhm_dimm->part_number[0]) { t = sizeof (nhm_dimm->part_number); (void) strncpy(sbuf, nhm_dimm->part_number, t); sbuf[t] = 0; (void) nvlist_add_string(newdimm, FM_FMRI_HC_PART, sbuf); } - if (nhm_dimm->revision && nhm_dimm->revision[0]) { + if (nhm_dimm->revision[0]) { t = sizeof (nhm_dimm->revision); (void) strncpy(sbuf, nhm_dimm->revision, t); sbuf[t] = 0; |
