kernel: ltq-adsl: add patch fixing compilation warning
[openwrt/openwrt.git] / package / kernel / lantiq / ltq-adsl / patches / 202-g997_danube-dynamically-allocate-hlogdata.patch
1 --- a/src/g997/drv_dsl_cpe_api_g997_danube.c
2 +++ b/src/g997/drv_dsl_cpe_api_g997_danube.c
3 @@ -1984,41 +1984,53 @@ DSL_Error_t DSL_DRV_DEV_G997_DeltHlogGet(
4 {
5 if (nDirection == DSL_DOWNSTREAM)
6 {
7 - DSL_G997_DeltHlogData_t HlogData;
8 + DSL_G997_DeltHlogData_t *HlogData;
9
10 - memset(&HlogData, 0x0, sizeof(DSL_G997_DeltHlogData_t));
11 + HlogData = kzalloc(sizeof(*HlogData), GFP_KERNEL);
12 + if (!HlogData)
13 + {
14 + DSL_DEBUG(DSL_DBG_ERR,
15 + (pContext, "DSL[%02d]: ERROR - Alloc HlogData failed!"DSL_DRV_CRLF,
16 + DSL_DEV_NUM(pContext)));
17 + return DSL_ERR_MEMORY;
18 + }
19 +
20 + memset(HlogData, 0x0, sizeof(DSL_G997_DeltHlogData_t));
21
22 /* Get SHOWTIME Hlog values*/
23 nErrCode = DSL_DRV_DANUBE_G997_DeltHlogGet(
24 - pContext, nDirection, &HlogData);
25 + pContext, nDirection, HlogData);
26 if (nErrCode != DSL_SUCCESS)
27 {
28 DSL_DEBUG(DSL_DBG_ERR,
29 (pContext, "DSL[%02d]: ERROR - Showtime Hlog get failed!"DSL_DRV_CRLF,
30 DSL_DEV_NUM(pContext)));
31 + kfree(HlogData);
32 return nErrCode;
33 }
34
35 /* if actual group size != 1, values should be spread */
36 - if (HlogData.nGroupSize != 1)
37 + if (HlogData->nGroupSize != 1)
38 {
39 nErrCode = DSL_DRV_DANUBE_G997_DeltValuesSpread(
40 - 0x1, HlogData.nGroupSize, HlogData.deltHlog.nNumData,
41 - HlogData.deltHlog.nNSCData, pData->deltHlog.nNSCData);
42 + 0x1, HlogData->nGroupSize, HlogData->deltHlog.nNumData,
43 + HlogData->deltHlog.nNSCData, pData->deltHlog.nNSCData);
44
45 if (nErrCode == DSL_SUCCESS)
46 {
47 pData->deltHlog.nNumData =
48 - (DSL_uint16_t)(HlogData.deltHlog.nNumData * HlogData.nGroupSize);
49 + (DSL_uint16_t)(HlogData->deltHlog.nNumData * HlogData->nGroupSize);
50 pData->nGroupSize = 1;
51 - pData->nMeasurementTime = HlogData.nMeasurementTime;
52 + pData->nMeasurementTime = HlogData->nMeasurementTime;
53 }
54 }
55 else
56 {
57 /* No spread needed, copy data*/
58 - memcpy(pData, &HlogData, sizeof(DSL_G997_DeltHlogData_t));
59 + memcpy(pData, HlogData, sizeof(DSL_G997_DeltHlogData_t));
60 }
61 +
62 + kfree(HlogData);
63 }
64 else
65 {