cifs: introduce helper for finding referral server to improve DFS target resolution
authorPaulo Alcantara <pc@cjr.nz>
Wed, 24 Feb 2021 23:59:23 +0000 (20:59 -0300)
committerSteve French <stfrench@microsoft.com>
Thu, 25 Feb 2021 18:19:15 +0000 (12:19 -0600)
commit5ff2836ed3a5c24420a7235be25a462594cdc4ea
tree20bc10e8ef8c989a70266d7353f3d27b1ecc71e3
parentff2c54a04097dee0b8899c485360719844d923f8
cifs: introduce helper for finding referral server to improve DFS target resolution

Some servers seem to mistakenly report different values for
capabilities and share flags, so we can't always rely on those values
to decide whether the resolved target can handle any new DFS
referrals.

Add a new helper is_referral_server() to check if all resolved targets
can handle new DFS referrals by directly looking at the
GET_DFS_REFERRAL.ReferralHeaderFlags value as specified in MS-DFSC
2.2.4 RESP_GET_DFS_REFERRAL in addition to is_tcon_dfs().

Signed-off-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
Cc: stable@vger.kernel.org # 5.11
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/connect.c
fs/cifs/dfs_cache.c