if (!memcmp(gid_entry_mbox->raw, gid_entry_tbl->raw,
                                                    sizeof(gid_entry_tbl->raw))) {
                                                /* found duplicate */
 -                                              mlx4_warn(dev, "requested gid entry for slave:%d "
 -                                                        "is a duplicate of gid at index %d\n",
 +                                              mlx4_warn(dev, "requested gid entry for slave:%d is a duplicate of gid at index %d\n",
                                                          slave, i);
+                                               mutex_unlock(&(priv->port[port].gid_table.mutex));
                                                return -EINVAL;
                                        }
                                }
 
  {
        WARN_ON_ONCE(atomic_read(&p->refcnt) <= 0);
  }
 -
 -
 -/* can be called with or without local BH being disabled */
 -static inline int inet_getid(struct inet_peer *p, int more)
 -{
 -      more++;
 -      inet_peer_refcheck(p);
 -      return atomic_add_return(more, &p->ip_id_count) - more;
 -}
--
  #endif /* _NET_INETPEER_H */
 
  #include <net/addrconf.h>
  #include <net/secure_seq.h>
  
 -void ipv6_select_ident(struct frag_hdr *fhdr, struct rt6_info *rt)
 -{
 -      static atomic_t ipv6_fragmentation_id;
 -      struct in6_addr addr;
 -      int ident;
 -
 -#if IS_ENABLED(CONFIG_IPV6)
 -      struct inet_peer *peer;
 -      struct net *net;
 -
 -      net = dev_net(rt->dst.dev);
 -      peer = inet_getpeer_v6(net->ipv6.peers, &rt->rt6i_dst.addr, 1);
 -      if (peer) {
 -              fhdr->identification = htonl(inet_getid(peer, 0));
 -              inet_putpeer(peer);
 -              return;
 -      }
 -#endif
 -      ident = atomic_inc_return(&ipv6_fragmentation_id);
 -
 -      addr = rt->rt6i_dst.addr;
 -      addr.s6_addr32[0] ^= (__force __be32)ident;
 -      fhdr->identification = htonl(secure_ipv6_id(addr.s6_addr32));
 -}
 -EXPORT_SYMBOL(ipv6_select_ident);
--
  int ip6_find_1stfragopt(struct sk_buff *skb, u8 **nexthdr)
  {
        u16 offset = sizeof(struct ipv6hdr);