.. | .. |
---|
1786 | 1786 | |
---|
1787 | 1787 | if (!dd->platform_config.data) { |
---|
1788 | 1788 | dd_dev_err(dd, "%s: Missing config file\n", __func__); |
---|
| 1789 | + ret = -EINVAL; |
---|
1789 | 1790 | goto bail; |
---|
1790 | 1791 | } |
---|
1791 | 1792 | ptr = (u32 *)dd->platform_config.data; |
---|
.. | .. |
---|
1794 | 1795 | ptr++; |
---|
1795 | 1796 | if (magic_num != PLATFORM_CONFIG_MAGIC_NUM) { |
---|
1796 | 1797 | dd_dev_err(dd, "%s: Bad config file\n", __func__); |
---|
| 1798 | + ret = -EINVAL; |
---|
1797 | 1799 | goto bail; |
---|
1798 | 1800 | } |
---|
1799 | 1801 | |
---|
.. | .. |
---|
1817 | 1819 | if (file_length > dd->platform_config.size) { |
---|
1818 | 1820 | dd_dev_info(dd, "%s:File claims to be larger than read size\n", |
---|
1819 | 1821 | __func__); |
---|
| 1822 | + ret = -EINVAL; |
---|
1820 | 1823 | goto bail; |
---|
1821 | 1824 | } else if (file_length < dd->platform_config.size) { |
---|
1822 | 1825 | dd_dev_info(dd, |
---|
.. | .. |
---|
1837 | 1840 | dd_dev_err(dd, "%s: Failed validation at offset %ld\n", |
---|
1838 | 1841 | __func__, (ptr - (u32 *) |
---|
1839 | 1842 | dd->platform_config.data)); |
---|
| 1843 | + ret = -EINVAL; |
---|
1840 | 1844 | goto bail; |
---|
1841 | 1845 | } |
---|
1842 | 1846 | |
---|
.. | .. |
---|
1868 | 1872 | 2; |
---|
1869 | 1873 | break; |
---|
1870 | 1874 | case PLATFORM_CONFIG_RX_PRESET_TABLE: |
---|
1871 | | - /* fall through */ |
---|
1872 | 1875 | case PLATFORM_CONFIG_TX_PRESET_TABLE: |
---|
1873 | | - /* fall through */ |
---|
1874 | 1876 | case PLATFORM_CONFIG_QSFP_ATTEN_TABLE: |
---|
1875 | | - /* fall through */ |
---|
1876 | 1877 | case PLATFORM_CONFIG_VARIABLE_SETTINGS_TABLE: |
---|
1877 | 1878 | pcfgcache->config_tables[table_type].num_table = |
---|
1878 | 1879 | table_length_dwords; |
---|
.. | .. |
---|
1883 | 1884 | __func__, table_type, |
---|
1884 | 1885 | (ptr - (u32 *) |
---|
1885 | 1886 | dd->platform_config.data)); |
---|
| 1887 | + ret = -EINVAL; |
---|
1886 | 1888 | goto bail; /* We don't trust this file now */ |
---|
1887 | 1889 | } |
---|
1888 | 1890 | pcfgcache->config_tables[table_type].table = ptr; |
---|
.. | .. |
---|
1890 | 1892 | /* metadata table */ |
---|
1891 | 1893 | switch (table_type) { |
---|
1892 | 1894 | case PLATFORM_CONFIG_SYSTEM_TABLE: |
---|
1893 | | - /* fall through */ |
---|
1894 | 1895 | case PLATFORM_CONFIG_PORT_TABLE: |
---|
1895 | | - /* fall through */ |
---|
1896 | 1896 | case PLATFORM_CONFIG_RX_PRESET_TABLE: |
---|
1897 | | - /* fall through */ |
---|
1898 | 1897 | case PLATFORM_CONFIG_TX_PRESET_TABLE: |
---|
1899 | | - /* fall through */ |
---|
1900 | 1898 | case PLATFORM_CONFIG_QSFP_ATTEN_TABLE: |
---|
1901 | | - /* fall through */ |
---|
1902 | 1899 | case PLATFORM_CONFIG_VARIABLE_SETTINGS_TABLE: |
---|
1903 | 1900 | break; |
---|
1904 | 1901 | default: |
---|
.. | .. |
---|
1907 | 1904 | __func__, table_type, |
---|
1908 | 1905 | (ptr - |
---|
1909 | 1906 | (u32 *)dd->platform_config.data)); |
---|
| 1907 | + ret = -EINVAL; |
---|
1910 | 1908 | goto bail; /* We don't trust this file now */ |
---|
1911 | 1909 | } |
---|
1912 | 1910 | pcfgcache->config_tables[table_type].table_metadata = |
---|
.. | .. |
---|
2028 | 2026 | |
---|
2029 | 2027 | switch (table) { |
---|
2030 | 2028 | case PLATFORM_CONFIG_SYSTEM_TABLE: |
---|
2031 | | - /* fall through */ |
---|
2032 | 2029 | case PLATFORM_CONFIG_PORT_TABLE: |
---|
2033 | | - /* fall through */ |
---|
2034 | 2030 | case PLATFORM_CONFIG_RX_PRESET_TABLE: |
---|
2035 | | - /* fall through */ |
---|
2036 | 2031 | case PLATFORM_CONFIG_TX_PRESET_TABLE: |
---|
2037 | | - /* fall through */ |
---|
2038 | 2032 | case PLATFORM_CONFIG_QSFP_ATTEN_TABLE: |
---|
2039 | | - /* fall through */ |
---|
2040 | 2033 | case PLATFORM_CONFIG_VARIABLE_SETTINGS_TABLE: |
---|
2041 | 2034 | if (field && field < platform_config_table_limits[table]) |
---|
2042 | 2035 | src_ptr = |
---|
.. | .. |
---|
2139 | 2132 | pcfgcache->config_tables[table_type].table; |
---|
2140 | 2133 | break; |
---|
2141 | 2134 | case PLATFORM_CONFIG_RX_PRESET_TABLE: |
---|
2142 | | - /* fall through */ |
---|
2143 | 2135 | case PLATFORM_CONFIG_TX_PRESET_TABLE: |
---|
2144 | | - /* fall through */ |
---|
2145 | 2136 | case PLATFORM_CONFIG_QSFP_ATTEN_TABLE: |
---|
2146 | | - /* fall through */ |
---|
2147 | 2137 | case PLATFORM_CONFIG_VARIABLE_SETTINGS_TABLE: |
---|
2148 | 2138 | src_ptr = pcfgcache->config_tables[table_type].table; |
---|
2149 | 2139 | |
---|