diff options
author | Andrew Rybchenko <arybchik@FreeBSD.org> | 2018-11-30 07:10:20 +0000 |
---|---|---|
committer | Andrew Rybchenko <arybchik@FreeBSD.org> | 2018-11-30 07:10:20 +0000 |
commit | d707fb201e80dec81194a9f7351706a2ceed3324 (patch) | |
tree | 152710c8950000f24d07797e9f2735efcb929e17 | |
parent | 405f7a36fe57c153ace171c8a4a1460e1024f668 (diff) | |
download | src-d707fb201e80dec81194a9f7351706a2ceed3324.tar.gz src-d707fb201e80dec81194a9f7351706a2ceed3324.zip |
sfxge(4): correct annotations where NULL input is OK
Correct annotations where NULL input can be permitted
Submitted by: Richard Houldsworth <rhouldsworth at solarflare.com>
Sponsored by: Solarflare Communications, Inc.
Differential Revision: https://reviews.freebsd.org/D18284
Notes
Notes:
svn path=/head/; revision=341323
-rw-r--r-- | sys/dev/sfxge/common/ef10_impl.h | 2 | ||||
-rw-r--r-- | sys/dev/sfxge/common/ef10_rx.c | 42 | ||||
-rw-r--r-- | sys/dev/sfxge/common/efx.h | 2 | ||||
-rw-r--r-- | sys/dev/sfxge/common/efx_intr.c | 2 | ||||
-rw-r--r-- | sys/dev/sfxge/common/efx_rx.c | 6 |
5 files changed, 34 insertions, 20 deletions
diff --git a/sys/dev/sfxge/common/ef10_impl.h b/sys/dev/sfxge/common/ef10_impl.h index 72f8a4987067..3149fb51a14b 100644 --- a/sys/dev/sfxge/common/ef10_impl.h +++ b/sys/dev/sfxge/common/ef10_impl.h @@ -1038,7 +1038,7 @@ ef10_rx_qcreate( __in unsigned int index, __in unsigned int label, __in efx_rxq_type_t type, - __in const union efx_rxq_type_data_u *type_data, + __in_opt const union efx_rxq_type_data_u *type_data, __in efsys_mem_t *esmp, __in size_t ndescs, __in uint32_t id, diff --git a/sys/dev/sfxge/common/ef10_rx.c b/sys/dev/sfxge/common/ef10_rx.c index c06f3ec146e1..b61880ab31a1 100644 --- a/sys/dev/sfxge/common/ef10_rx.c +++ b/sys/dev/sfxge/common/ef10_rx.c @@ -1015,7 +1015,7 @@ ef10_rx_qcreate( __in unsigned int index, __in unsigned int label, __in efx_rxq_type_t type, - __in const efx_rxq_type_data_t *type_data, + __in_opt const efx_rxq_type_data_t *type_data, __in efsys_mem_t *esmp, __in size_t ndescs, __in uint32_t id, @@ -1058,6 +1058,10 @@ ef10_rx_qcreate( break; #if EFSYS_OPT_RX_PACKED_STREAM case EFX_RXQ_TYPE_PACKED_STREAM: + if (type_data == NULL) { + rc = EINVAL; + goto fail3; + } switch (type_data->ertd_packed_stream.eps_buf_size) { case EFX_RXQ_PACKED_STREAM_BUF_SIZE_1M: ps_buf_size = MC_CMD_INIT_RXQ_EXT_IN_PS_BUFF_1M; @@ -1076,12 +1080,16 @@ ef10_rx_qcreate( break; default: rc = ENOTSUP; - goto fail3; + goto fail4; } break; #endif /* EFSYS_OPT_RX_PACKED_STREAM */ #if EFSYS_OPT_RX_ES_SUPER_BUFFER case EFX_RXQ_TYPE_ES_SUPER_BUFFER: + if (type_data == NULL) { + rc = EINVAL; + goto fail5; + } ps_buf_size = 0; es_bufs_per_desc = type_data->ertd_es_super_buffer.eessb_bufs_per_desc; @@ -1095,7 +1103,7 @@ ef10_rx_qcreate( #endif /* EFSYS_OPT_RX_ES_SUPER_BUFFER */ default: rc = ENOTSUP; - goto fail4; + goto fail6; } #if EFSYS_OPT_RX_PACKED_STREAM @@ -1103,13 +1111,13 @@ ef10_rx_qcreate( /* Check if datapath firmware supports packed stream mode */ if (encp->enc_rx_packed_stream_supported == B_FALSE) { rc = ENOTSUP; - goto fail5; + goto fail7; } /* Check if packed stream allows configurable buffer sizes */ if ((ps_buf_size != MC_CMD_INIT_RXQ_EXT_IN_PS_BUFF_1M) && (encp->enc_rx_var_packed_stream_supported == B_FALSE)) { rc = ENOTSUP; - goto fail6; + goto fail8; } } #else /* EFSYS_OPT_RX_PACKED_STREAM */ @@ -1120,17 +1128,17 @@ ef10_rx_qcreate( if (es_bufs_per_desc > 0) { if (encp->enc_rx_es_super_buffer_supported == B_FALSE) { rc = ENOTSUP; - goto fail7; + goto fail9; } if (!IS_P2ALIGNED(es_max_dma_len, EFX_RX_ES_SUPER_BUFFER_BUF_ALIGNMENT)) { rc = EINVAL; - goto fail8; + goto fail10; } if (!IS_P2ALIGNED(es_buf_stride, EFX_RX_ES_SUPER_BUFFER_BUF_ALIGNMENT)) { rc = EINVAL; - goto fail9; + goto fail11; } } #else /* EFSYS_OPT_RX_ES_SUPER_BUFFER */ @@ -1152,7 +1160,7 @@ ef10_rx_qcreate( esmp, disable_scatter, want_inner_classes, ps_buf_size, es_bufs_per_desc, es_max_dma_len, es_buf_stride, hol_block_timeout)) != 0) - goto fail10; + goto fail12; erp->er_eep = eep; erp->er_label = label; @@ -1163,25 +1171,31 @@ ef10_rx_qcreate( return (0); +fail12: + EFSYS_PROBE(fail12); +#if EFSYS_OPT_RX_ES_SUPER_BUFFER +fail11: + EFSYS_PROBE(fail11); fail10: EFSYS_PROBE(fail10); -#if EFSYS_OPT_RX_ES_SUPER_BUFFER fail9: EFSYS_PROBE(fail9); +#endif /* EFSYS_OPT_RX_ES_SUPER_BUFFER */ +#if EFSYS_OPT_RX_PACKED_STREAM fail8: EFSYS_PROBE(fail8); fail7: EFSYS_PROBE(fail7); -#endif /* EFSYS_OPT_RX_ES_SUPER_BUFFER */ -#if EFSYS_OPT_RX_PACKED_STREAM +#endif /* EFSYS_OPT_RX_PACKED_STREAM */ fail6: EFSYS_PROBE(fail6); +#if EFSYS_OPT_RX_ES_SUPER_BUFFER fail5: EFSYS_PROBE(fail5); -#endif /* EFSYS_OPT_RX_PACKED_STREAM */ +#endif /* EFSYS_OPT_RX_ES_SUPER_BUFFER */ +#if EFSYS_OPT_RX_PACKED_STREAM fail4: EFSYS_PROBE(fail4); -#if EFSYS_OPT_RX_PACKED_STREAM fail3: EFSYS_PROBE(fail3); #endif /* EFSYS_OPT_RX_PACKED_STREAM */ diff --git a/sys/dev/sfxge/common/efx.h b/sys/dev/sfxge/common/efx.h index 35651f935e23..63f390a451d0 100644 --- a/sys/dev/sfxge/common/efx.h +++ b/sys/dev/sfxge/common/efx.h @@ -328,7 +328,7 @@ extern __checkReturn efx_rc_t efx_intr_init( __in efx_nic_t *enp, __in efx_intr_type_t type, - __in efsys_mem_t *esmp); + __in_opt efsys_mem_t *esmp); extern void efx_intr_enable( diff --git a/sys/dev/sfxge/common/efx_intr.c b/sys/dev/sfxge/common/efx_intr.c index 279413807e7c..5e4436350592 100644 --- a/sys/dev/sfxge/common/efx_intr.c +++ b/sys/dev/sfxge/common/efx_intr.c @@ -122,7 +122,7 @@ static const efx_intr_ops_t __efx_intr_ef10_ops = { efx_intr_init( __in efx_nic_t *enp, __in efx_intr_type_t type, - __in efsys_mem_t *esmp) + __in_opt efsys_mem_t *esmp) { efx_intr_t *eip = &(enp->en_intr); const efx_intr_ops_t *eiop; diff --git a/sys/dev/sfxge/common/efx_rx.c b/sys/dev/sfxge/common/efx_rx.c index 51628b338487..b1185ae0b7da 100644 --- a/sys/dev/sfxge/common/efx_rx.c +++ b/sys/dev/sfxge/common/efx_rx.c @@ -136,7 +136,7 @@ siena_rx_qcreate( __in unsigned int index, __in unsigned int label, __in efx_rxq_type_t type, - __in const efx_rxq_type_data_t *type_data, + __in_opt const efx_rxq_type_data_t *type_data, __in efsys_mem_t *esmp, __in size_t ndescs, __in uint32_t id, @@ -813,7 +813,7 @@ efx_rx_qcreate_internal( __in unsigned int index, __in unsigned int label, __in efx_rxq_type_t type, - __in const efx_rxq_type_data_t *type_data, + __in_opt const efx_rxq_type_data_t *type_data, __in efsys_mem_t *esmp, __in size_t ndescs, __in uint32_t id, @@ -1597,7 +1597,7 @@ siena_rx_qcreate( __in unsigned int index, __in unsigned int label, __in efx_rxq_type_t type, - __in const efx_rxq_type_data_t *type_data, + __in_opt const efx_rxq_type_data_t *type_data, __in efsys_mem_t *esmp, __in size_t ndescs, __in uint32_t id, |