staging: rtl8192u: fix large frame size compiler warning
PATCH 1/1 staging: rtl8192u: fix large frame size compiler warning
Compiling drivers/staging/rtl8192u/ gives following compiler warning:
drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c: In function ‘RxReorderIndicatePacket’:drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c:758:1: warning: the frame size of 1064 bytes is larger than 1024 bytes [-Wframe-larger-than=]
This patch fixes it by replacing the statically allocated array prxbIndicateArray with kmalloc'd one.
--- drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)
drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c +11 -1
@@ -594,12 +594,22 @@ static void RxReorderIndicatePacket(struct ieee80211_device *ieee, {PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo;PRX_REORDER_ENTRY pReorderEntry =NULL ; -struct ieee80211_rxb *prxbIndicateArray[REORDER_WIN_SIZE ]; +struct ieee80211_rxb **prxbIndicateArray;u8 WinSize = pHTInfo->RxReorderWinSize;u16 WinEnd = (pTS->RxIndicateSeq + WinSize -1 )%4096 ;u8 index =0 ;bool bMatchWinStart = false, bPktInBuf = false;IEEE80211_DEBUG (IEEE80211_DL_REORDER ,"%s(): Seq is %d,pTS->RxIndicateSeq is %d, WinSize is %d\n" ,__func__,SeqNum,pTS->RxIndicateSeq,WinSize); + + prxbIndicateArray =kmalloc (sizeof (struct ieee80211_rxb *) * +REORDER_WIN_SIZE ,GFP_KERNEL ); +if (!prxbIndicateArray) { +IEEE80211_DEBUG (IEEE80211_DL_ERR , +"%s(): kmalloc prxbIndicateArray error\n" , + __func__); +return ; + } +/* Rx Reorder initialize condition.*/ if (pTS->RxIndicateSeq ==0xffff ) { pTS->RxIndicateSeq = SeqNum;
Signature · 1 line
2.5.2
Quoted 47 lines · Okash Khawaja
Compiling
drivers/staging/rtl8192u/gives following compiler warning:
drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c: In function ‘RxReorderIndicatePacket’:drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c:758:1: warning: the frame size of 1064 bytes is larger than 1024 bytes [-Wframe-larger-than=]This patch fixes it by replacing the statically allocated array
prxbIndicateArraywith kmalloc'd one.Signed-off-by Okash Khawaja <[email protected]>--- drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c +11
-1@@ -594,12 +594,22 @@ static void RxReorderIndicatePacket(struct ieee80211_device *ieee, {PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo;PRX_REORDER_ENTRY pReorderEntry =NULL ; -struct ieee80211_rxb *prxbIndicateArray[REORDER_WIN_SIZE ]; +struct ieee80211_rxb **prxbIndicateArray;u8 WinSize = pHTInfo->RxReorderWinSize;u16 WinEnd = (pTS->RxIndicateSeq + WinSize -1 )%4096 ;u8 index =0 ;bool bMatchWinStart = false, bPktInBuf = false;IEEE80211_DEBUG (IEEE80211_DL_REORDER ,"%s(): Seq is %d,pTS->RxIndicateSeq is %d, WinSize is %d\n" ,__func__,SeqNum,pTS->RxIndicateSeq,WinSize); + + prxbIndicateArray =kmalloc (sizeof (struct ieee80211_rxb *) * +REORDER_WIN_SIZE ,GFP_KERNEL ); +if (!prxbIndicateArray) { +IEEE80211_DEBUG (IEEE80211_DL_ERR , +"%s(): kmalloc prxbIndicateArray error\n" , + __func__); +return ; + } +/* Rx Reorder initialize condition.*/ if (pTS->RxIndicateSeq ==0xffff ) { pTS->RxIndicateSeq = SeqNum;Signature · 1 line
2.5.2
This doesn't free the kmalloc'd array. Please ignore this. I'll send another version of this patch.
Thanks
PATCH 1/1 staging: rtl8192u: fix large frame size compiler warning
In reply to Okash KhawajaThis patch fixes following compiler warning:
drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c: In function ‘RxReorderIndicatePacket’:drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c:758:1: warning: the frame size of 1064 bytes is larger than 1024 bytes [-Wframe-larger-than=]
It replaces the statically allocated array prxbIndicateArray with a kmalloc'd one.
--- drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-)
drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c +14 -1
@@ -594,12 +594,22 @@ static void RxReorderIndicatePacket(struct ieee80211_device *ieee, {PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo;PRX_REORDER_ENTRY pReorderEntry =NULL ; -struct ieee80211_rxb *prxbIndicateArray[REORDER_WIN_SIZE ]; +struct ieee80211_rxb **prxbIndicateArray;u8 WinSize = pHTInfo->RxReorderWinSize;u16 WinEnd = (pTS->RxIndicateSeq + WinSize -1 )%4096 ;u8 index =0 ;bool bMatchWinStart = false, bPktInBuf = false;IEEE80211_DEBUG (IEEE80211_DL_REORDER ,"%s(): Seq is %d,pTS->RxIndicateSeq is %d, WinSize is %d\n" ,__func__,SeqNum,pTS->RxIndicateSeq,WinSize); + + prxbIndicateArray =kmalloc (sizeof (struct ieee80211_rxb *) * +REORDER_WIN_SIZE ,GFP_KERNEL ); +if (!prxbIndicateArray) { +IEEE80211_DEBUG (IEEE80211_DL_ERR , +"%s(): kmalloc prxbIndicateArray error\n" , + __func__); +return ; + } +/* Rx Reorder initialize condition.*/ if (pTS->RxIndicateSeq ==0xffff ) { pTS->RxIndicateSeq = SeqNum;
@@ -618,6 +628,8 @@ static void RxReorderIndicatePacket(struct ieee80211_device *ieee,kfree (prxb); prxb =NULL ; } + +kfree (prxbIndicateArray);return ; }
@@ -741,6 +753,7 @@ static void RxReorderIndicatePacket(struct ieee80211_device *ieee,// Indicate packets if (index>REORDER_WIN_SIZE ){IEEE80211_DEBUG (IEEE80211_DL_ERR ,"RxReorderIndicatePacket(): Rx Reorer buffer full!! \n" ); +kfree (prxbIndicateArray);return ; }ieee80211_indicate_packets (ieee, prxbIndicateArray, index);
Signature · 1 line
2.5.2
Put a v3 in the subject.
There are still paths where this is not freed, so we need a v4. Take your time, there is no rush.
Quoted 15 lines
drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-)drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c +1
-1@@ -594,12 +594,22 @@ static void RxReorderIndicatePacket(struct ieee80211_device *ieee, {PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo;PRX_REORDER_ENTRY pReorderEntry =NULL ; -struct ieee80211_rxb *prxbIndicateArray[REORDER_WIN_SIZE ]; +struct ieee80211_rxb **prxbIndicateArray;u8 WinSize = pHTInfo->RxReorderWinSize;u16 WinEnd = (pTS->RxIndicateSeq + WinSize -1 )%4096 ;
drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c static void RxReorderIndicatePacket(struct ieee80211_device *ieee, · line 609
Quoted 10 lines
drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c +7
-0u8 index =0 ;bool bMatchWinStart = false, bPktInBuf = false;IEEE80211_DEBUG (IEEE80211_DL_REORDER ,"%s(): Seq is %d,pTS->RxIndicateSeq is %d, WinSize is %d\n" ,__func__,SeqNum,pTS->RxIndicateSeq,WinSize); + + prxbIndicateArray =kmalloc (sizeof (struct ieee80211_rxb *) * +REORDER_WIN_SIZE ,GFP_KERNEL ); +if (!prxbIndicateArray) { +IEEE80211_DEBUG (IEEE80211_DL_ERR , +"%s(): kmalloc prxbIndicateArray error\n" , + __func__);
Don't print an error if kmalloc() fails. kmalloc has its own message.
drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c static void RxReorderIndicatePacket(struct ieee80211_device *ieee, · line 611
Quoted 2 lines
drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c +2
-0+return ; + }
regards,
dan carpenter
PATCH v4 1/1 staging: rtl8192u: fix large frame size compiler warning
This patch fixes following compiler warning:
drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c: In function ‘RxReorderIndicatePacket’:drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c:758:1: warning: the frame size of 1064 bytes is larger than 1024 bytes [-Wframe-larger-than=]
It replaces the statically allocated array prxbIndicateArray with a kmalloc'd one.
--- drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-)
drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c +12 -1
@@ -594,12 +594,18 @@ static void RxReorderIndicatePacket(struct ieee80211_device *ieee, {PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo;PRX_REORDER_ENTRY pReorderEntry =NULL ; -struct ieee80211_rxb *prxbIndicateArray[REORDER_WIN_SIZE ]; +struct ieee80211_rxb **prxbIndicateArray;u8 WinSize = pHTInfo->RxReorderWinSize;u16 WinEnd = (pTS->RxIndicateSeq + WinSize -1 )%4096 ;u8 index =0 ;bool bMatchWinStart = false, bPktInBuf = false;IEEE80211_DEBUG (IEEE80211_DL_REORDER ,"%s(): Seq is %d,pTS->RxIndicateSeq is %d, WinSize is %d\n" ,__func__,SeqNum,pTS->RxIndicateSeq,WinSize); + + prxbIndicateArray =kmalloc (sizeof (struct ieee80211_rxb *) * +REORDER_WIN_SIZE ,GFP_KERNEL ); +if (!prxbIndicateArray) +return ; +/* Rx Reorder initialize condition.*/ if (pTS->RxIndicateSeq ==0xffff ) { pTS->RxIndicateSeq = SeqNum;
@@ -618,6 +624,8 @@ static void RxReorderIndicatePacket(struct ieee80211_device *ieee,kfree (prxb); prxb =NULL ; } + +kfree (prxbIndicateArray);return ; }
@@ -741,6 +749,7 @@ static void RxReorderIndicatePacket(struct ieee80211_device *ieee,// Indicate packets if (index>REORDER_WIN_SIZE ){IEEE80211_DEBUG (IEEE80211_DL_ERR ,"RxReorderIndicatePacket(): Rx Reorer buffer full!! \n" ); +kfree (prxbIndicateArray);return ; }ieee80211_indicate_packets (ieee, prxbIndicateArray, index);
@@ -755,6 +764,8 @@ static void RxReorderIndicatePacket(struct ieee80211_device *ieee, pTS->RxPktPendingTimer.expires = jiffies +MSECS (pHTInfo->RxReorderPendingTime);add_timer (&pTS->RxPktPendingTimer); } + +kfree (prxbIndicateArray); } static u8 parse_subframe(struct sk_buff *skb,
Signature · 1 line
2.5.2
Quoted 69 lines · Okash Khawaja
This patch fixes following compiler warning:
drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c: In function ‘RxReorderIndicatePacket’:drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c:758:1: warning: the frame size of 1064 bytes is larger than 1024 bytes [-Wframe-larger-than=]It replaces the statically allocated array prxbIndicateArray with a kmalloc'd one.
Signed-off-by Okash Khawaja <[email protected]>--- drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-)drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c +12
-1@@ -594,12 +594,18 @@ static void RxReorderIndicatePacket(struct ieee80211_device *ieee, {PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo;PRX_REORDER_ENTRY pReorderEntry =NULL ; -struct ieee80211_rxb *prxbIndicateArray[REORDER_WIN_SIZE ]; +struct ieee80211_rxb **prxbIndicateArray;u8 WinSize = pHTInfo->RxReorderWinSize;u16 WinEnd = (pTS->RxIndicateSeq + WinSize -1 )%4096 ;u8 index =0 ;bool bMatchWinStart = false, bPktInBuf = false;IEEE80211_DEBUG (IEEE80211_DL_REORDER ,"%s(): Seq is %d,pTS->RxIndicateSeq is %d, WinSize is %d\n" ,__func__,SeqNum,pTS->RxIndicateSeq,WinSize); + + prxbIndicateArray =kmalloc (sizeof (struct ieee80211_rxb *) * +REORDER_WIN_SIZE ,GFP_KERNEL ); +if (!prxbIndicateArray) +return ; +/* Rx Reorder initialize condition.*/ if (pTS->RxIndicateSeq ==0xffff ) { pTS->RxIndicateSeq = SeqNum;@@ -618,6 +624,8 @@ static void RxReorderIndicatePacket(struct ieee80211_device *ieee,kfree (prxb); prxb =NULL ; } + +kfree (prxbIndicateArray);return ; }@@ -741,6 +749,7 @@ static void RxReorderIndicatePacket(struct ieee80211_device *ieee,// Indicate packets if (index>REORDER_WIN_SIZE ){IEEE80211_DEBUG (IEEE80211_DL_ERR ,"RxReorderIndicatePacket(): Rx Reorer buffer full!! \n" ); +kfree (prxbIndicateArray);return ; }ieee80211_indicate_packets (ieee, prxbIndicateArray, index);@@ -755,6 +764,8 @@ static void RxReorderIndicatePacket(struct ieee80211_device *ieee, pTS->RxPktPendingTimer.expires = jiffies +MSECS (pHTInfo->RxReorderPendingTime);add_timer (&pTS->RxPktPendingTimer); } + +kfree (prxbIndicateArray); } static u8 parse_subframe(struct sk_buff *skb,Signature · 1 line
2.5.2
Hi,
Has a return path been missed out now?
Thanks,
Okash
Looks ok.
Greg is working through his inbox. It will take a little while for him to get to your patch. Be patient.
regards,
dan carpenter