misc: nvsciipc: Fix build for Linux v6.12

In Linux v6.12, commit 88a2f6468d01 ("struct fd: representation change")
removed the 'struct file' pointer from 'struct fd'. This breaks building
the NVSCIIPC driver that tries to directly access the 'file' pointer
from the 'fd' structure. Fix this by using the helper macros 'fd_empty'
and 'fd_file' as necessary to fix the build.

Bug 4593750

Change-Id: I0f84736b408f533a732476175a8745091bc8542f
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3217429
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Jon Hunter
2024-09-17 17:30:02 +01:00
parent c69cddda5d
commit 7adb4caf5b
3 changed files with 45 additions and 0 deletions

View File

@@ -84,11 +84,20 @@ NvSciError NvSciIpcEndpointValidateAuthTokenLinuxCurrent(
} }
f = fdget((int)authToken); f = fdget((int)authToken);
#if defined(NV_FD_EMPTY_PRESENT) /* Linux v6.12 */
if (fd_empty(f)) {
#else
if (!f.file) { if (!f.file) {
#endif
ERR("invalid auth token\n"); ERR("invalid auth token\n");
return NvSciError_BadParameter; return NvSciError_BadParameter;
} }
#if defined(NV_FD_FILE_PRESENT) /* Linux v6.12 */
filp = fd_file(f);
#else
filp = f.file; filp = f.file;
#endif
devlen = strlen(filp->f_path.dentry->d_name.name); devlen = strlen(filp->f_path.dentry->d_name.name);
#if DEBUG_VALIDATE_TOKEN #if DEBUG_VALIDATE_TOKEN

View File

@@ -126,6 +126,8 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += ethtool_kernel_ethtool_ts_info_struct_pres
NV_CONFTEST_FUNCTION_COMPILE_TESTS += ethtool_ops_get_set_coalesce_has_coal_and_extack_args NV_CONFTEST_FUNCTION_COMPILE_TESTS += ethtool_ops_get_set_coalesce_has_coal_and_extack_args
NV_CONFTEST_FUNCTION_COMPILE_TESTS += ethtool_ops_get_set_ringparam_has_ringparam_and_extack_args NV_CONFTEST_FUNCTION_COMPILE_TESTS += ethtool_ops_get_set_ringparam_has_ringparam_and_extack_args
NV_CONFTEST_FUNCTION_COMPILE_TESTS += ethtool_ops_get_set_rxfh_has_rxfh_param_args NV_CONFTEST_FUNCTION_COMPILE_TESTS += ethtool_ops_get_set_rxfh_has_rxfh_param_args
NV_CONFTEST_FUNCTION_COMPILE_TESTS += fd_empty
NV_CONFTEST_FUNCTION_COMPILE_TESTS += fd_file
NV_CONFTEST_FUNCTION_COMPILE_TESTS += folio_entire_mapcount NV_CONFTEST_FUNCTION_COMPILE_TESTS += folio_entire_mapcount
NV_CONFTEST_FUNCTION_COMPILE_TESTS += genpd_xlate_t_has_const_of_phandle_args NV_CONFTEST_FUNCTION_COMPILE_TESTS += genpd_xlate_t_has_const_of_phandle_args
NV_CONFTEST_FUNCTION_COMPILE_TESTS += get_file_rcu_has_double_ptr_file_arg NV_CONFTEST_FUNCTION_COMPILE_TESTS += get_file_rcu_has_double_ptr_file_arg

View File

@@ -7246,6 +7246,40 @@ compile_test() {
"NV_ETHTOOL_OPS_GET_SET_RXFH_HAS_RXFH_PARAM_ARGS" "" "types" "NV_ETHTOOL_OPS_GET_SET_RXFH_HAS_RXFH_PARAM_ARGS" "" "types"
;; ;;
fd_empty)
#
# Determine if macro fd_empty() is present.
#
# Added by commit 88a2f6468d01 ("struct fd: representation change")
# in Linux v6.12.
#
CODE="
#include <linux/file.h>
void conftest(void)
{
fd_empty();
}"
compile_check_conftest "$CODE" "NV_FD_EMPTY_PRESENT" "" "functions"
;;
fd_file)
#
# Determine if macro fd_file() is present.
#
# Added by commit 88a2f6468d01 ("struct fd: representation change")
# in Linux v6.12.
#
CODE="
#include <linux/file.h>
void conftest(void)
{
fd_file();
}"
compile_check_conftest "$CODE" "NV_FD_FILE_PRESENT" "" "functions"
;;
folio_entire_mapcount) folio_entire_mapcount)
# #
# Determine if function folio_entire_mapcount() is present. # Determine if function folio_entire_mapcount() is present.