[RDMA_NLDEV_ATTR_UVERBS_DRIVER_ID]      = { .type = NLA_U32 },
        [RDMA_NLDEV_NET_NS_FD]                  = { .type = NLA_U32 },
        [RDMA_NLDEV_SYS_ATTR_NETNS_MODE]        = { .type = NLA_U8 },
+       [RDMA_NLDEV_SYS_ATTR_COPY_ON_FORK]      = { .type = NLA_U8 },
 };
 
 static int put_driver_name_print_type(struct sk_buff *msg, const char *name,
                nlmsg_free(msg);
                return err;
        }
+
+       /*
+        * Copy-on-fork is supported.
+        * See commits:
+        * 70e806e4e645 ("mm: Do early cow for pinned pages during fork() for ptes")
+        * 4eae4efa2c29 ("hugetlb: do early cow when page pinned on src mm")
+        * for more details. Don't backport this without them.
+        *
+        * Return value ignored on purpose, assume copy-on-fork is not
+        * supported in case of failure.
+        */
+       nla_put_u8(msg, RDMA_NLDEV_SYS_ATTR_COPY_ON_FORK, 1);
+
        nlmsg_end(msg, nlh);
        return rdma_nl_unicast(sock_net(skb->sk), msg, NETLINK_CB(skb).portid);
 }
 
 
        RDMA_NLDEV_ATTR_MIN_RANGE,              /* u32 */
        RDMA_NLDEV_ATTR_MAX_RANGE,              /* u32 */
+
+       RDMA_NLDEV_SYS_ATTR_COPY_ON_FORK,       /* u8 */
+
        /*
         * Always the end
         */