Commit 27d80718 authored by Arnd Bergmann's avatar Arnd Bergmann Committed by David S. Miller

ISDN: eicon: reduce stack size of sig_ind function

I noticed that this function uses a lot of kernel stack when the
"latent entropy" plugin is enabled:

drivers/isdn/hardware/eicon/message.c: In function 'sig_ind':
drivers/isdn/hardware/eicon/message.c:6113:1: error: the frame size of 1168 bytes is larger than 1152 bytes [-Werror=frame-larger-than=]

We currently don't warn about this, as we raise the warning limit
to 2048 bytes in mainline, but I'd like to lower that limit again
in the future, and this function can easily be changed to be more
efficient and avoid that warning, by making some of its local
variables 'const'.
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 5b9d6b15
...@@ -147,7 +147,7 @@ static word plci_remove_check(PLCI *); ...@@ -147,7 +147,7 @@ static word plci_remove_check(PLCI *);
static void listen_check(DIVA_CAPI_ADAPTER *); static void listen_check(DIVA_CAPI_ADAPTER *);
static byte AddInfo(byte **, byte **, byte *, byte *); static byte AddInfo(byte **, byte **, byte *, byte *);
static byte getChannel(API_PARSE *); static byte getChannel(API_PARSE *);
static void IndParse(PLCI *, word *, byte **, byte); static void IndParse(PLCI *, const word *, byte **, byte);
static byte ie_compare(byte *, byte *); static byte ie_compare(byte *, byte *);
static word find_cip(DIVA_CAPI_ADAPTER *, byte *, byte *); static word find_cip(DIVA_CAPI_ADAPTER *, byte *, byte *);
static word CPN_filter_ok(byte *cpn, DIVA_CAPI_ADAPTER *, word); static word CPN_filter_ok(byte *cpn, DIVA_CAPI_ADAPTER *, word);
...@@ -4858,7 +4858,7 @@ static void sig_ind(PLCI *plci) ...@@ -4858,7 +4858,7 @@ static void sig_ind(PLCI *plci)
/* included before the ESC_MSGTYPE and MAXPARMSIDS has to be incremented */ /* included before the ESC_MSGTYPE and MAXPARMSIDS has to be incremented */
/* SMSG is situated at the end because its 0 (for compatibility reasons */ /* SMSG is situated at the end because its 0 (for compatibility reasons */
/* (see Info_Mask Bit 4, first IE. then the message type) */ /* (see Info_Mask Bit 4, first IE. then the message type) */
word parms_id[] = static const word parms_id[] =
{MAXPARMSIDS, CPN, 0xff, DSA, OSA, BC, LLC, HLC, ESC_CAUSE, DSP, DT, CHA, {MAXPARMSIDS, CPN, 0xff, DSA, OSA, BC, LLC, HLC, ESC_CAUSE, DSP, DT, CHA,
UUI, CONG_RR, CONG_RNR, ESC_CHI, KEY, CHI, CAU, ESC_LAW, UUI, CONG_RR, CONG_RNR, ESC_CHI, KEY, CHI, CAU, ESC_LAW,
RDN, RDX, CONN_NR, RIN, NI, CAI, ESC_CR, RDN, RDX, CONN_NR, RIN, NI, CAI, ESC_CR,
...@@ -4866,12 +4866,12 @@ static void sig_ind(PLCI *plci) ...@@ -4866,12 +4866,12 @@ static void sig_ind(PLCI *plci)
/* 14 FTY repl by ESC_CHI */ /* 14 FTY repl by ESC_CHI */
/* 18 PI repl by ESC_LAW */ /* 18 PI repl by ESC_LAW */
/* removed OAD changed to 0xff for future use, OAD is multiIE now */ /* removed OAD changed to 0xff for future use, OAD is multiIE now */
word multi_fac_id[] = {1, FTY}; static const word multi_fac_id[] = {1, FTY};
word multi_pi_id[] = {1, PI}; static const word multi_pi_id[] = {1, PI};
word multi_CiPN_id[] = {1, OAD}; static const word multi_CiPN_id[] = {1, OAD};
word multi_ssext_id[] = {1, ESC_SSEXT}; static const word multi_ssext_id[] = {1, ESC_SSEXT};
word multi_vswitch_id[] = {1, ESC_VSWITCH}; static const word multi_vswitch_id[] = {1, ESC_VSWITCH};
byte *cau; byte *cau;
word ncci; word ncci;
...@@ -8924,7 +8924,7 @@ static void listen_check(DIVA_CAPI_ADAPTER *a) ...@@ -8924,7 +8924,7 @@ static void listen_check(DIVA_CAPI_ADAPTER *a)
/* functions for all parameters sent in INDs */ /* functions for all parameters sent in INDs */
/*------------------------------------------------------------------*/ /*------------------------------------------------------------------*/
static void IndParse(PLCI *plci, word *parms_id, byte **parms, byte multiIEsize) static void IndParse(PLCI *plci, const word *parms_id, byte **parms, byte multiIEsize)
{ {
word ploc; /* points to current location within packet */ word ploc; /* points to current location within packet */
byte w; byte w;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment