re: staging: add Lustre file system client support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> Hello Lustre devs,
> 
> The patch d7e09d0397e8: "staging: add Lustre file system client
> support" from May 2, 2013, leads to the following Parfait warning.
> Parfait is an Oracle static analysis tool.  If there is a patch from
> this could you give credit to Lidza Louina <lidza.louina@xxxxxxxxxx>

Just to let you know we have a ticket to track this issue at:

https://jira.hpdd.intel.com/browse/LU-8128

The reason we have been avoiding this is that in the past small
fixes to the ldlm layer has caused havoc at very large scale.
So we are very careful when approaching this class of fixes.
 
> drivers/staging/lustre/lustre/ldlm/interval_tree.c
>    399  void interval_erase(struct interval_node *node,
>    400                      struct interval_node **root)
>    401  {
>    402          struct interval_node *child, *parent;
>    403          int color;
>    404  
>    405          LASSERT(interval_is_intree(node));
>    406          node->in_intree = 0;
>    407          if (!node->in_left) {
>    408                  child = node->in_right;
>    409          } else if (!node->in_right) {
>    410                  child = node->in_left;
>    411          } else { /* Both left and right child are not NULL */
>    412                  struct interval_node *old = node;
>    413  
>    414                  node = interval_next(node);
>                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
> It looks like interval_next() can return NULL.
> 
>    415                  child = node->in_right;
>    416                  parent = node->in_parent;
>    417                  color = node->in_color;
>    418  
> 
> Here is the interval_next() function:
> 
> drivers/staging/lustre/lustre/ldlm/interval_tree.c
>    111  static struct interval_node *interval_next(struct interval_node *node)
>    112  {
>    113          if (!node)
>    114                  return NULL;
>    115          if (node->in_right)
>    116                  return interval_first(node->in_right);
>    117          while (node->in_parent && node_is_right_child(node))
>                        ^^^^^^^^^^^^^^^
> We assume that ->in_parent can be NULL here.  Is that actually possible?
> 
>    118                  node = node->in_parent;
>    119          return node->in_parent;
>    120  }
> 
> regards,
> dan carpenter
> _______________________________________________
> devel mailing list
> devel@xxxxxxxxxxxxxxxxxxxxxx
> http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
> 
_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel



[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux