mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-02 05:56:54 +07:00
i40evf: fix possible snprintf truncation of q_vector->name
The q_vector names are based on the interface name with a driver prefix, the type of q_vector setup, and the queue number. We previously set the size of this variable to IFNAMSIZ + 9, which is incorrect, because we actually include a minimum of 14 characters extra beyond the interface name size. New versions of GCC since 7 include a new warning that detects this possible truncation and complains. We can fix this by increasing the size in case our interface name is too large to avoid truncation. We don't need to go beyond 14 because the compiler is smart enough to realize our values can never exceed size of 1. We do go up to 15 here because possible future changes may increase the number of queues beyond one digit. While we are here, also change some variables to be unsigned (since they are never negative) and stop using an extra unnecessary %s format specifier. Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
e53b382f3a
commit
696ac80aa1
@ -121,7 +121,7 @@ struct i40e_q_vector {
|
||||
#define ITR_COUNTDOWN_START 100
|
||||
u8 itr_countdown; /* when 0 or 1 update ITR */
|
||||
int v_idx; /* vector index in list */
|
||||
char name[IFNAMSIZ + 9];
|
||||
char name[IFNAMSIZ + 15];
|
||||
bool arm_wb_state;
|
||||
cpumask_t affinity_mask;
|
||||
struct irq_affinity_notify affinity_notify;
|
||||
|
@ -543,9 +543,9 @@ static void i40evf_irq_affinity_release(struct kref *ref) {}
|
||||
static int
|
||||
i40evf_request_traffic_irqs(struct i40evf_adapter *adapter, char *basename)
|
||||
{
|
||||
int vector, err, q_vectors;
|
||||
int rx_int_idx = 0, tx_int_idx = 0;
|
||||
int irq_num;
|
||||
unsigned int vector, q_vectors;
|
||||
unsigned int rx_int_idx = 0, tx_int_idx = 0;
|
||||
int irq_num, err;
|
||||
|
||||
i40evf_irq_disable(adapter);
|
||||
/* Decrement for Other and TCP Timer vectors */
|
||||
@ -556,18 +556,15 @@ i40evf_request_traffic_irqs(struct i40evf_adapter *adapter, char *basename)
|
||||
irq_num = adapter->msix_entries[vector + NONQ_VECS].vector;
|
||||
|
||||
if (q_vector->tx.ring && q_vector->rx.ring) {
|
||||
snprintf(q_vector->name, sizeof(q_vector->name) - 1,
|
||||
"i40evf-%s-%s-%d", basename,
|
||||
"TxRx", rx_int_idx++);
|
||||
snprintf(q_vector->name, sizeof(q_vector->name),
|
||||
"i40evf-%s-TxRx-%d", basename, rx_int_idx++);
|
||||
tx_int_idx++;
|
||||
} else if (q_vector->rx.ring) {
|
||||
snprintf(q_vector->name, sizeof(q_vector->name) - 1,
|
||||
"i40evf-%s-%s-%d", basename,
|
||||
"rx", rx_int_idx++);
|
||||
snprintf(q_vector->name, sizeof(q_vector->name),
|
||||
"i40evf-%s-rx-%d", basename, rx_int_idx++);
|
||||
} else if (q_vector->tx.ring) {
|
||||
snprintf(q_vector->name, sizeof(q_vector->name) - 1,
|
||||
"i40evf-%s-%s-%d", basename,
|
||||
"tx", tx_int_idx++);
|
||||
snprintf(q_vector->name, sizeof(q_vector->name),
|
||||
"i40evf-%s-tx-%d", basename, tx_int_idx++);
|
||||
} else {
|
||||
/* skip this unused q_vector */
|
||||
continue;
|
||||
|
Loading…
Reference in New Issue
Block a user