svn commit: r298316 - stable/9/lib/libgssapi

2016-04-19 Thread Pedro F. Giffuni
Author: pfg
Date: Wed Apr 20 00:50:17 2016
New Revision: 298316
URL: https://svnweb.freebsd.org/changeset/base/298316

Log:
  MFC 297942:
  libgssapi: avoid NULL pointer dereferences.
  
  While here also use NULL instead of zero for pointers.

Modified:
  stable/9/lib/libgssapi/gss_add_cred.c
  stable/9/lib/libgssapi/gss_encapsulate_token.c
  stable/9/lib/libgssapi/gss_get_mic.c
  stable/9/lib/libgssapi/gss_inquire_context.c
  stable/9/lib/libgssapi/gss_mech_switch.c
  stable/9/lib/libgssapi/gss_pseudo_random.c
  stable/9/lib/libgssapi/gss_verify_mic.c
  stable/9/lib/libgssapi/gss_wrap.c
  stable/9/lib/libgssapi/gss_wrap_size_limit.c
Directory Properties:
  stable/9/lib/libgssapi/   (props changed)

Modified: stable/9/lib/libgssapi/gss_add_cred.c
==
--- stable/9/lib/libgssapi/gss_add_cred.c   Wed Apr 20 00:49:49 2016
(r298315)
+++ stable/9/lib/libgssapi/gss_add_cred.c   Wed Apr 20 00:50:17 2016
(r298316)
@@ -121,7 +121,7 @@ gss_add_cred(OM_uint32 *minor_status,
 * gss_add_cred for that mechanism, otherwise we copy the mc
 * to new_cred.
 */
-   target_mc = 0;
+   target_mc = NULL;
if (cred) {
SLIST_FOREACH(mc, >gc_mc, gmc_link) {
if (gss_oid_equal(mc->gmc_mech_oid, desired_mech)) {
@@ -151,7 +151,7 @@ gss_add_cred(OM_uint32 *minor_status,
return (major_status);
}
} else {
-   mn = 0;
+   mn = NULL;
}
 
m = _gss_find_mech_switch(desired_mech);

Modified: stable/9/lib/libgssapi/gss_encapsulate_token.c
==
--- stable/9/lib/libgssapi/gss_encapsulate_token.c  Wed Apr 20 00:49:49 
2016(r298315)
+++ stable/9/lib/libgssapi/gss_encapsulate_token.c  Wed Apr 20 00:50:17 
2016(r298316)
@@ -47,7 +47,7 @@ gss_encapsulate_token(const gss_buffer_t
 * First time around, we calculate the size, second time, we
 * encode the token.
 */
-   p = 0;
+   p = NULL;
for (i = 0; i < 2; i++) {
len = 0;
 

Modified: stable/9/lib/libgssapi/gss_get_mic.c
==
--- stable/9/lib/libgssapi/gss_get_mic.cWed Apr 20 00:49:49 2016
(r298315)
+++ stable/9/lib/libgssapi/gss_get_mic.cWed Apr 20 00:50:17 2016
(r298316)
@@ -40,13 +40,14 @@ gss_get_mic(OM_uint32 *minor_status,
 gss_buffer_t message_token)
 {
struct _gss_context *ctx = (struct _gss_context *) context_handle;
-   struct _gss_mech_switch *m = ctx->gc_mech;
+   struct _gss_mech_switch *m;
 
_gss_buffer_zero(message_token);
if (ctx == NULL) {
*minor_status = 0;
return (GSS_S_NO_CONTEXT);
}
+   m = ctx->gc_mech;
 
return (m->gm_get_mic(minor_status, ctx->gc_ctx, qop_req,
message_buffer, message_token));

Modified: stable/9/lib/libgssapi/gss_inquire_context.c
==
--- stable/9/lib/libgssapi/gss_inquire_context.cWed Apr 20 00:49:49 
2016(r298315)
+++ stable/9/lib/libgssapi/gss_inquire_context.cWed Apr 20 00:50:17 
2016(r298316)
@@ -99,7 +99,7 @@ gss_inquire_context(OM_uint32 *minor_sta
if (src_name)
gss_release_name(minor_status, src_name);
m->gm_release_name(minor_status, _mn);
-   minor_status = 0;
+   minor_status = NULL;
return (GSS_S_FAILURE);
}
*targ_name = (gss_name_t) name;

Modified: stable/9/lib/libgssapi/gss_mech_switch.c
==
--- stable/9/lib/libgssapi/gss_mech_switch.cWed Apr 20 00:49:49 2016
(r298315)
+++ stable/9/lib/libgssapi/gss_mech_switch.cWed Apr 20 00:50:17 2016
(r298316)
@@ -83,7 +83,7 @@ _gss_string_to_oid(const char* s, gss_OI
 * out the size. Second time around, we actually encode the
 * number.
 */
-   res = 0;
+   res = NULL;
for (i = 0; i < 2; i++) {
byte_count = 0;
for (p = s, j = 0; p; p = q, j++) {

Modified: stable/9/lib/libgssapi/gss_pseudo_random.c
==
--- stable/9/lib/libgssapi/gss_pseudo_random.c  Wed Apr 20 00:49:49 2016
(r298315)
+++ stable/9/lib/libgssapi/gss_pseudo_random.c  Wed Apr 20 00:50:17 2016
(r298316)
@@ -48,7 +48,7 @@ gss_pseudo_random(OM_uint32 *minor_statu
  gss_buffer_t prf_out)
 {
 struct _gss_context *ctx = (struct _gss_context *) context;
-struct 

svn commit: r298284 - stable/9/sys/dev/bxe

2016-04-19 Thread David C Somayajulu
Author: davidcs
Date: Tue Apr 19 19:03:06 2016
New Revision: 298284
URL: https://svnweb.freebsd.org/changeset/base/298284

Log:
  MFC r297884
  Add support for Flash Update
  
  Submitted 
by:nrapendra.si...@qlogic.com;vaishali.kulka...@qlogic.com;davi...@freebsd.org

Modified:
  stable/9/sys/dev/bxe/bxe.c
  stable/9/sys/dev/bxe/bxe.h
  stable/9/sys/dev/bxe/bxe_ioctl.h
Directory Properties:
  stable/9/   (props changed)
  stable/9/sys/   (props changed)
  stable/9/sys/dev/   (props changed)

Modified: stable/9/sys/dev/bxe/bxe.c
==
--- stable/9/sys/dev/bxe/bxe.c  Tue Apr 19 18:57:31 2016(r298283)
+++ stable/9/sys/dev/bxe/bxe.c  Tue Apr 19 19:03:06 2016(r298284)
@@ -13693,49 +13693,60 @@ bxe_get_tunable_params(struct bxe_softc 
   sc->udp_rss);
 }
 
-static void
+static int
 bxe_media_detect(struct bxe_softc *sc)
 {
+int port_type;
 uint32_t phy_idx = bxe_get_cur_phy_idx(sc);
+
 switch (sc->link_params.phy[phy_idx].media_type) {
 case ELINK_ETH_PHY_SFPP_10G_FIBER:
 case ELINK_ETH_PHY_XFP_FIBER:
 BLOGI(sc, "Found 10Gb Fiber media.\n");
 sc->media = IFM_10G_SR;
+port_type = PORT_FIBRE;
 break;
 case ELINK_ETH_PHY_SFP_1G_FIBER:
 BLOGI(sc, "Found 1Gb Fiber media.\n");
 sc->media = IFM_1000_SX;
+port_type = PORT_FIBRE;
 break;
 case ELINK_ETH_PHY_KR:
 case ELINK_ETH_PHY_CX4:
 BLOGI(sc, "Found 10GBase-CX4 media.\n");
 sc->media = IFM_10G_CX4;
+port_type = PORT_FIBRE;
 break;
 case ELINK_ETH_PHY_DA_TWINAX:
 BLOGI(sc, "Found 10Gb Twinax media.\n");
 sc->media = IFM_10G_TWINAX;
+port_type = PORT_DA;
 break;
 case ELINK_ETH_PHY_BASE_T:
 if (sc->link_params.speed_cap_mask[0] &
 PORT_HW_CFG_SPEED_CAPABILITY_D0_10G) {
 BLOGI(sc, "Found 10GBase-T media.\n");
 sc->media = IFM_10G_T;
+port_type = PORT_TP;
 } else {
 BLOGI(sc, "Found 1000Base-T media.\n");
 sc->media = IFM_1000_T;
+port_type = PORT_TP;
 }
 break;
 case ELINK_ETH_PHY_NOT_PRESENT:
 BLOGI(sc, "Media not present.\n");
 sc->media = 0;
+port_type = PORT_OTHER;
 break;
 case ELINK_ETH_PHY_UNSPECIFIED:
 default:
 BLOGI(sc, "Unknown media!\n");
 sc->media = 0;
+port_type = PORT_OTHER;
 break;
 }
+return port_type;
 }
 
 #define GET_FIELD(value, fname) \
@@ -18754,6 +18765,14 @@ bxe_add_cdev(struct bxe_softc *sc)
 if (sc->grc_dump == NULL)
 return (-1);
 
+sc->eeprom = malloc(BXE_EEPROM_MAX_DATA_LEN, M_DEVBUF, M_NOWAIT);
+
+if (sc->eeprom == NULL) {
+BLOGW(sc, "Unable to alloc for eeprom size buffer\n");
+free(sc->grc_dump, M_DEVBUF); sc->grc_dump = NULL;
+return (-1);
+}
+
 sc->ioctl_dev = make_dev(_cdevsw,
 sc->ifnet->if_dunit,
 UID_ROOT,
@@ -18765,6 +18784,8 @@ bxe_add_cdev(struct bxe_softc *sc)
 if (sc->ioctl_dev == NULL) {
 
 free(sc->grc_dump, M_DEVBUF);
+free(sc->eeprom, M_DEVBUF);
+sc->eeprom = NULL;
 
 return (-1);
 }
@@ -18780,12 +18801,152 @@ bxe_del_cdev(struct bxe_softc *sc)
 if (sc->ioctl_dev != NULL)
 destroy_dev(sc->ioctl_dev);
 
-if (sc->grc_dump == NULL)
+if (sc->grc_dump != NULL)
 free(sc->grc_dump, M_DEVBUF);
 
+if (sc->eeprom != NULL) {
+free(sc->eeprom, M_DEVBUF);
+sc->eeprom = NULL;
+}
+
 return;
 }
 
+static bool bxe_is_nvram_accessible(struct bxe_softc *sc)
+{
+
+if ((sc->ifnet->if_drv_flags & IFF_DRV_RUNNING) == 0)
+return FALSE;
+
+return TRUE;
+}
+
+
+static int
+bxe_wr_eeprom(struct bxe_softc *sc, void *data, uint32_t offset, uint32_t len)
+{
+int rval = 0;
+
+if(!bxe_is_nvram_accessible(sc)) {
+BLOGW(sc, "Cannot access eeprom when interface is down\n");
+return (-EAGAIN);
+}
+rval = bxe_nvram_write(sc, offset, (uint8_t *)data, len);
+
+
+   return (rval);
+}
+
+static int
+bxe_rd_eeprom(struct bxe_softc *sc, void *data, uint32_t offset, uint32_t len)
+{
+int rval = 0;
+
+if(!bxe_is_nvram_accessible(sc)) {
+BLOGW(sc, "Cannot access eeprom when interface is down\n");
+return (-EAGAIN);
+}
+rval = bxe_nvram_read(sc, offset, (uint8_t *)data, len);
+
+   return (rval);
+}
+
+static int
+bxe_eeprom_rd_wr(struct bxe_softc *sc, bxe_eeprom_t *eeprom)
+{
+int rval = 0;
+
+switch (eeprom->eeprom_cmd) {
+
+case BXE_EEPROM_CMD_SET_EEPROM:
+
+rval = copyin(eeprom->eeprom_data, sc->eeprom,
+   eeprom->eeprom_data_len);
+
+if (rval)
+break;
+
+rval = bxe_wr_eeprom(sc, sc->eeprom, eeprom->eeprom_offset,
+   

svn commit: r298283 - stable/9/sys/dev/bxe

2016-04-19 Thread David C Somayajulu
Author: davidcs
Date: Tue Apr 19 18:57:31 2016
New Revision: 298283
URL: https://svnweb.freebsd.org/changeset/base/298283

Log:
  MFC r297873
  
  1. Process tx completions in bxe_periodic_callout_func() and restart
 transmissions if possible.
  2. For SIOCSIFFLAGS call bxe_init_locked() only if !BXE_STATE_DISABLED
  3. remove code not needed in bxe_init_internal_common()
  
  Submitted by:vaishali.kulka...@qlogic.com;venkata.bhavar...@qlogic.com

Modified:
  stable/9/sys/dev/bxe/bxe.c
  stable/9/sys/dev/bxe/bxe_stats.h
Directory Properties:
  stable/9/   (props changed)
  stable/9/sys/   (props changed)
  stable/9/sys/dev/   (props changed)

Modified: stable/9/sys/dev/bxe/bxe.c
==
--- stable/9/sys/dev/bxe/bxe.c  Tue Apr 19 18:47:34 2016(r298282)
+++ stable/9/sys/dev/bxe/bxe.c  Tue Apr 19 18:57:31 2016(r298283)
@@ -498,7 +498,9 @@ static const struct {
 { STATS_OFFSET32(mbuf_alloc_sge),
 4, STATS_FLAGS_FUNC, "mbuf_alloc_sge"},
 { STATS_OFFSET32(mbuf_alloc_tpa),
-4, STATS_FLAGS_FUNC, "mbuf_alloc_tpa"}
+4, STATS_FLAGS_FUNC, "mbuf_alloc_tpa"},
+{ STATS_OFFSET32(tx_queue_full_return),
+4, STATS_FLAGS_FUNC, "tx_queue_full_return"}
 };
 
 static const struct {
@@ -609,7 +611,9 @@ static const struct {
 { Q_STATS_OFFSET32(mbuf_alloc_sge),
 4, "mbuf_alloc_sge"},
 { Q_STATS_OFFSET32(mbuf_alloc_tpa),
-4, "mbuf_alloc_tpa"}
+4, "mbuf_alloc_tpa"},
+{ Q_STATS_OFFSET32(tx_queue_full_return),
+4, "tx_queue_full_return"}
 };
 
 #define BXE_NUM_ETH_STATS   ARRAY_SIZE(bxe_eth_stats_arr)
@@ -4626,7 +4630,7 @@ bxe_ioctl(struct ifnet *ifp,
 if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
 /* set the receive mode flags */
 bxe_set_rx_mode(sc);
-} else {
+} else if(sc->state != BXE_STATE_DISABLED) {
bxe_init_locked(sc);
 }
 } else {
@@ -5737,11 +5741,6 @@ bxe_tx_start(struct ifnet *ifp)
 return;
 }
 
-if (ifp->if_drv_flags & IFF_DRV_OACTIVE) {
-BLOGW(sc, "Interface TX queue is full, ignoring transmit request\n");
-return;
-}
-
 if (!sc->link_vars.link_up) {
 BLOGW(sc, "Interface link is down, ignoring transmit request\n");
 return;
@@ -5749,6 +5748,11 @@ bxe_tx_start(struct ifnet *ifp)
 
 fp = >fp[0];
 
+if (ifp->if_drv_flags & IFF_DRV_OACTIVE) {
+fp->eth_q_stats.tx_queue_full_return++;
+return;
+}
+
 BXE_FP_TX_LOCK(fp);
 bxe_tx_start_locked(sc, ifp, fp);
 BXE_FP_TX_UNLOCK(fp);
@@ -9950,21 +9954,6 @@ bxe_init_internal_common(struct bxe_soft
 {
 int i;
 
-if (IS_MF_SI(sc)) {
-/*
- * In switch independent mode, the TSTORM needs to accept
- * packets that failed classification, since approximate match
- * mac addresses aren't written to NIG LLH.
- */
-REG_WR8(sc,
-(BAR_TSTRORM_INTMEM + TSTORM_ACCEPT_CLASSIFY_FAILED_OFFSET),
-2);
-} else if (!CHIP_IS_E1(sc)) { /* 57710 doesn't support MF */
-REG_WR8(sc,
-(BAR_TSTRORM_INTMEM + TSTORM_ACCEPT_CLASSIFY_FAILED_OFFSET),
-0);
-}
-
 /*
  * Zero this manually as its initialization is currently missing
  * in the initTool.
@@ -12307,6 +12296,8 @@ static void
 bxe_periodic_callout_func(void *xsc)
 {
 struct bxe_softc *sc = (struct bxe_softc *)xsc;
+struct bxe_fastpath *fp;
+uint16_t tx_bd_avail;
 int i;
 
 if (!BXE_CORE_TRYLOCK(sc)) {
@@ -12329,6 +12320,48 @@ bxe_periodic_callout_func(void *xsc)
 return;
 }
 
+#if __FreeBSD_version >= 80
+
+FOR_EACH_QUEUE(sc, i) {
+fp = >fp[i];
+
+if (BXE_FP_TX_TRYLOCK(fp)) {
+struct ifnet *ifp = sc->ifnet;
+/*
+ * If interface was stopped due to unavailable
+ * bds, try to process some tx completions
+ */
+(void) bxe_txeof(sc, fp);
+   
+tx_bd_avail = bxe_tx_avail(sc, fp);
+if (tx_bd_avail >= BXE_TX_CLEANUP_THRESHOLD) {
+bxe_tx_mq_start_locked(sc, ifp, fp, NULL);
+}
+BXE_FP_TX_UNLOCK(fp);
+}
+}
+
+#else
+
+fp = >fp[0];
+if (BXE_FP_TX_TRYLOCK(fp)) {
+struct ifnet *ifp = sc->ifnet;
+/*
+ * If interface was stopped due to unavailable
+ * bds, try to process some tx completions
+ */
+(void) bxe_txeof(sc, fp);
+   
+tx_bd_avail = bxe_tx_avail(sc, fp);
+if (tx_bd_avail >= BXE_TX_CLEANUP_THRESHOLD) {
+bxe_tx_start_locked(sc, ifp, fp);
+}
+ 
+BXE_FP_TX_UNLOCK(fp);
+}
+
+#endif /* #if __FreeBSD_version >= 80 */
+
 /* Check for TX timeouts on any fastpath. */
 

svn commit: r298265 - stable/9/cddl/contrib/opensolaris/lib/libzfs/common

2016-04-19 Thread Andriy Gapon
Author: avg
Date: Tue Apr 19 12:14:52 2016
New Revision: 298265
URL: https://svnweb.freebsd.org/changeset/base/298265

Log:
  MFC r297520: zfs receive: -u can be ignored sometimes
  
  PR:   204705

Modified:
  stable/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c
Directory Properties:
  stable/9/cddl/contrib/opensolaris/lib/libzfs/   (props changed)

Modified: stable/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c
==
--- stable/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c   
Tue Apr 19 12:14:15 2016(r298264)
+++ stable/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c   
Tue Apr 19 12:14:52 2016(r298265)
@@ -3105,7 +3105,8 @@ zfs_receive_one(libzfs_handle_t *hdl, in
}
 
if (clp) {
-   err |= changelist_postfix(clp);
+   if (!flags->nomount)
+   err |= changelist_postfix(clp);
changelist_free(clp);
}
 
___
svn-src-stable-9@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-stable-9
To unsubscribe, send any mail to "svn-src-stable-9-unsubscr...@freebsd.org"